From d6c5a5a52310ea05205a599709990bf6bee0499a Mon Sep 17 00:00:00 2001 From: Benoit Foucher Date: Tue, 11 Aug 2015 18:43:28 +0200 Subject: Fixed ICE-6695 - ensure buffers are not cleared too early for WS/SSL transports --- cpp/src/Ice/StreamSocket.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'cpp/src/Ice/StreamSocket.cpp') diff --git a/cpp/src/Ice/StreamSocket.cpp b/cpp/src/Ice/StreamSocket.cpp index 7ade8172ba4..8eb3a23daf9 100644 --- a/cpp/src/Ice/StreamSocket.cpp +++ b/cpp/src/Ice/StreamSocket.cpp @@ -105,7 +105,7 @@ StreamSocket::connect(Buffer& readBuffer, Buffer& writeBuffer) bool StreamSocket::isConnected() { - return _state == StateConnected; + return _state == StateConnected && _fd != INVALID_SOCKET; } size_t @@ -377,7 +377,7 @@ StreamSocket::startWrite(Buffer& buf) void StreamSocket::finishWrite(Buffer& buf) { - if(_state < StateConnected && _state != StateProxyWrite) + if(_fd == INVALID_SOCKET || (_state < StateConnected && _state != StateProxyWrite)) { return; } @@ -439,6 +439,11 @@ StreamSocket::startRead(Buffer& buf) void StreamSocket::finishRead(Buffer& buf) { + if(_fd == INVALID_SOCKET) + { + return; + } + if(static_cast(_read.count) == SOCKET_ERROR) { WSASetLastError(_read.error); -- cgit v1.2.3