diff options
Diffstat (limited to 'node/TcpSocket.cpp')
| -rw-r--r-- | node/TcpSocket.cpp | 11 |
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); } |
