summaryrefslogtreecommitdiff
path: root/cpp/src/IceSSL/SslTransceiver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceSSL/SslTransceiver.cpp')
-rw-r--r--cpp/src/IceSSL/SslTransceiver.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/cpp/src/IceSSL/SslTransceiver.cpp b/cpp/src/IceSSL/SslTransceiver.cpp
index 9295828b0f2..c8198dc247e 100644
--- a/cpp/src/IceSSL/SslTransceiver.cpp
+++ b/cpp/src/IceSSL/SslTransceiver.cpp
@@ -25,6 +25,7 @@ using IceSSL::ConnectionPtr;
SOCKET
IceSSL::SslTransceiver::fd()
{
+ assert(_fd != INVALID_SOCKET);
return _fd;
}
@@ -38,9 +39,6 @@ IceSSL::SslTransceiver::close()
_logger->trace(_traceLevels->networkCat, s.str());
}
- SOCKET fd = _fd;
- _fd = INVALID_SOCKET;
-
int shutdown = 0;
int numRetries = 100;
int retries = -numRetries;
@@ -51,8 +49,9 @@ IceSSL::SslTransceiver::close()
}
while((shutdown == 0) && (retries < 0));
- ::shutdown(fd, SHUT_RDWR); // helps to unblock threads in recv()
- closeSocket(fd);
+ assert(_fd != INVALID_SOCKET);
+ closeSocket(_fd);
+ _fd = INVALID_SOCKET;
}
void
@@ -75,18 +74,21 @@ IceSSL::SslTransceiver::shutdown()
}
while((shutdown == 0) && (retries < 0));
+ assert(_fd != INVALID_SOCKET);
::shutdown(_fd, SHUT_WR); // Shutdown socket for writing
}
void
IceSSL::SslTransceiver::write(Buffer& buf, int timeout)
{
+ assert(_fd != INVALID_SOCKET);
_sslConnection->write(buf, timeout);
}
void
IceSSL::SslTransceiver::read(Buffer& buf, int timeout)
{
+ assert(_fd != INVALID_SOCKET);
if(!_sslConnection->read(buf, timeout))
{
if(_traceLevels->security >= IceSSL::SECURITY_WARNINGS)