summaryrefslogtreecommitdiff
path: root/src/Socket.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Socket.cc')
-rw-r--r--src/Socket.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/Socket.cc b/src/Socket.cc
index e1778be..7f91e7b 100644
--- a/src/Socket.cc
+++ b/src/Socket.cc
@@ -548,7 +548,15 @@ ssize_t Balau::Socket::write(const void * buf, size_t count) throw (GeneralExcep
}
ssize_t Balau::Socket::recv(int sockfd, void *buf, size_t len, int flags) {
- return ::recv(sockfd, (char *) buf, len, flags);
+ ssize_t r = ::recv(sockfd, (char *) buf, len, flags);
+ if (r < 0) {
+#ifdef _WIN32
+ int err = WSAGetLastError();
+ if (err == WSAECONNABORTED)
+ return 0;
+#endif
+ }
+ return r;
}
ssize_t Balau::Socket::send(int sockfd, const void *buf, size_t len, int flags) {