]> granicus.if.org Git - icinga2/commitdiff
Bugfixes for the socket subsystem.
authorGunnar Beutner <gunnar.beutner@netways.de>
Tue, 2 Apr 2013 09:08:08 +0000 (11:08 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Tue, 2 Apr 2013 09:08:35 +0000 (11:08 +0200)
lib/base/socket.cpp
lib/base/tlsstream.cpp

index 5f4a07071e1304ba2d06dbd5363aaf3d33693643..249bcdcc227b7d8c3b1b08483aea00e1a1302167 100644 (file)
@@ -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()
index 2b12155e324f787a65c25e16ee02a61bb1e6e548..fa2577c18badacfdf1a2b4f164cad4e3080d7d59 100644 (file)
@@ -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));
 }