summaryrefslogtreecommitdiff
path: root/node/TcpSocket.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'node/TcpSocket.cpp')
-rw-r--r--node/TcpSocket.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/node/TcpSocket.cpp b/node/TcpSocket.cpp
index 5d475c93..fd8e9a94 100644
--- a/node/TcpSocket.cpp
+++ b/node/TcpSocket.cpp
@@ -164,6 +164,16 @@ bool TcpSocket::notifyAvailableForWrite(const SharedPtr<Socket> &self,SocketMana
if (_outptr) {
int n = (int)::send(_sock,(const char *)_outbuf,_outptr,0);
+#ifdef __WINDOWS__
+ if (n == SOCKET_ERROR) {
+ switch(WSAGetLastError()) {
+ case WSAEINTR:
+ case WSAEWOULDBLOCK:
+ break;
+ default:
+ return false;
+ }
+#else
if (n <= 0) {
switch(errno) {
#ifdef EAGAIN
@@ -179,6 +189,7 @@ bool TcpSocket::notifyAvailableForWrite(const SharedPtr<Socket> &self,SocketMana
default:
return false;
}
+#endif
} else memmove(_outbuf,_outbuf + (unsigned int)n,_outptr -= (unsigned int)n);
}