diff --git a/lib/base/socket.cpp b/lib/base/socket.cpp index 5f4a07071..249bcdcc2 100644 --- a/lib/base/socket.cpp +++ b/lib/base/socket.cpp @@ -538,6 +538,13 @@ void Socket::HandleWritableClient(void) rc = send(GetFD(), data, count, 0); +#ifdef _WIN32 + if (rc < 0 && WSAGetLastError() == WSAEWOULDBLOCK) +#else /* _WIN32 */ + if (rc < 0 && errno == EAGAIN) +#endif /* _WIN32 */ + break; + if (rc <= 0) { #ifndef _WIN32 BOOST_THROW_EXCEPTION(socket_error() diff --git a/lib/base/tlsstream.cpp b/lib/base/tlsstream.cpp index 2b12155e3..fa2577c18 100644 --- a/lib/base/tlsstream.cpp +++ b/lib/base/tlsstream.cpp @@ -293,5 +293,5 @@ void TlsStream::Write(const void *buffer, size_t count) m_SendQueue->Write(buffer, count); } - HandleIO(); + Utility::QueueAsyncCallback(boost::bind(&TlsStream::HandleIO, this)); }