summaryrefslogtreecommitdiff
path: root/cpp/src/Ice/SslTransceiver.cpp
diff options
context:
space:
mode:
authorAnthony Neal <aneal@zeroc.com>2001-12-19 16:48:31 +0000
committerAnthony Neal <aneal@zeroc.com>2001-12-19 16:48:31 +0000
commit73e15974110b3538960ecd4613187d79bd32c47a (patch)
tree56a62cdb2752e295d4f46810dd2d88623e38e96d /cpp/src/Ice/SslTransceiver.cpp
parentFix for ActivePython bug under WIN32. (diff)
downloadice-73e15974110b3538960ecd4613187d79bd32c47a.tar.bz2
ice-73e15974110b3538960ecd4613187d79bd32c47a.tar.xz
ice-73e15974110b3538960ecd4613187d79bd32c47a.zip
This is the 'fix' for the IceStorm related bug having to do with oneways.
It requires that Marc make it legal for read() to return 0 bytes.
Diffstat (limited to 'cpp/src/Ice/SslTransceiver.cpp')
-rw-r--r--cpp/src/Ice/SslTransceiver.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/cpp/src/Ice/SslTransceiver.cpp b/cpp/src/Ice/SslTransceiver.cpp
index 31d9e854612..cac54001969 100644
--- a/cpp/src/Ice/SslTransceiver.cpp
+++ b/cpp/src/Ice/SslTransceiver.cpp
@@ -42,8 +42,8 @@ IceInternal::SslTransceiver::close()
}
SOCKET fd = _fd;
- cleanUpSSL();
_fd = INVALID_SOCKET;
+ _sslConnection->shutdown();
::shutdown(fd, SHUT_RDWR); // helps to unblock threads in recv()
closeSocket(fd);
@@ -62,6 +62,7 @@ IceInternal::SslTransceiver::shutdown()
_logger->trace(_traceLevels->networkCat, s.str());
}
+ _sslConnection->shutdown();
::shutdown(_fd, SHUT_WR); // Shutdown socket for writing
ICE_METHOD_RET("SslTransceiver::shutdown()");
@@ -82,9 +83,13 @@ IceInternal::SslTransceiver::read(Buffer& buf, int timeout)
if (!_sslConnection->read(buf, timeout))
{
- ConnectionLostException clEx(__FILE__, __LINE__);
- clEx.error = 0;
- throw clEx;
+ ICE_WARNING("Connection::read() returning no bytes read.");
+
+ // TODO: Perhaps this should be a NoApplicationDataException ???
+ // ICE_WARNING("Throwing ConnectionLostException.");
+ // ConnectionLostException clEx(__FILE__, __LINE__);
+ // clEx.error = 0;
+ // throw clEx;
}
ICE_METHOD_RET("SslTransceiver::read()");
@@ -113,15 +118,8 @@ IceInternal::SslTransceiver::~SslTransceiver()
{
assert(_fd == INVALID_SOCKET);
- cleanUpSSL();
-}
-
-void
-IceInternal::SslTransceiver::cleanUpSSL()
-{
if (_sslConnection != 0)
{
- _sslConnection->shutdown();
delete _sslConnection;
_sslConnection = 0;
}