summaryrefslogtreecommitdiff
path: root/cpp/src/IceSSL/SslConnectionOpenSSLClient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceSSL/SslConnectionOpenSSLClient.cpp')
-rw-r--r--cpp/src/IceSSL/SslConnectionOpenSSLClient.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/cpp/src/IceSSL/SslConnectionOpenSSLClient.cpp b/cpp/src/IceSSL/SslConnectionOpenSSLClient.cpp
index ee311d28838..e810873818f 100644
--- a/cpp/src/IceSSL/SslConnectionOpenSSLClient.cpp
+++ b/cpp/src/IceSSL/SslConnectionOpenSSLClient.cpp
@@ -158,6 +158,7 @@ IceSSL::OpenSSL::ClientConnection::init(int timeout)
// errno isn't set in this situation, so we always use
// ECONNREFUSED.
//
+// std::cout << std::dec << clock() << " init(): SSL_ERROR_SYSCALL: (result == 0)" << std::endl;
ConnectFailedException ex(__FILE__, __LINE__);
#ifdef _WIN32
ex.error = WSAECONNREFUSED;
@@ -198,6 +199,17 @@ IceSSL::OpenSSL::ClientConnection::init(int timeout)
throw protocolEx;
}
}
+
+ case SSL_ERROR_ZERO_RETURN:
+ {
+ // Indicates that that the SSL Connection has been closed.
+ // But does not necessarily indicate that the underlying transport
+ // has been closed (in the case of Ice, it definitely hasn't yet).
+
+ ConnectionLostException ex(__FILE__, __LINE__);
+ ex.error = getSocketErrno();
+ throw ex;
+ }
}
retCode = SSL_is_init_finished(_sslConnection);