summaryrefslogtreecommitdiff
path: root/cpp/src/IceSSL/SslConnectionOpenSSL.h
diff options
context:
space:
mode:
authorAnthony Neal <aneal@zeroc.com>2002-05-14 00:23:01 +0000
committerAnthony Neal <aneal@zeroc.com>2002-05-14 00:23:01 +0000
commit6728a6037d0542da5886976c0498e64db98c0d71 (patch)
tree3f2d7baf96ee8d13201b22ddcee6aa0976134477 /cpp/src/IceSSL/SslConnectionOpenSSL.h
parentcatch unknown exceptions from entry point (diff)
downloadice-6728a6037d0542da5886976c0498e64db98c0d71.tar.bz2
ice-6728a6037d0542da5886976c0498e64db98c0d71.tar.xz
ice-6728a6037d0542da5886976c0498e64db98c0d71.zip
Updated to fix a problem with SSL server shutdown.
Diffstat (limited to 'cpp/src/IceSSL/SslConnectionOpenSSL.h')
-rw-r--r--cpp/src/IceSSL/SslConnectionOpenSSL.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/cpp/src/IceSSL/SslConnectionOpenSSL.h b/cpp/src/IceSSL/SslConnectionOpenSSL.h
index c71b11e8a0b..0d08f83ccbc 100644
--- a/cpp/src/IceSSL/SslConnectionOpenSSL.h
+++ b/cpp/src/IceSSL/SslConnectionOpenSSL.h
@@ -116,6 +116,13 @@ private:
// would always be a reference to them from the map.
typedef std::map<SSL*, Connection*> SslConnectionMap;
+typedef enum
+{
+ Handshake, // The connection is negotiating a connection with the peer.
+ Shutdown, // The connection is in the process of shutting down.
+ Connected // The connection is connected - communication may continue.
+} ConnectPhase;
+
class Connection : public IceSSL::Connection
{
public:
@@ -125,12 +132,12 @@ public:
const IceSSL::PluginBaseIPtr&);
virtual ~Connection();
- virtual void shutdown();
+ virtual int shutdown(int timeout = 0);
virtual int read(IceInternal::Buffer&, int);
virtual int write(IceInternal::Buffer&, int) = 0;
- virtual int init(int timeout = 0) = 0;
+ virtual int handshake(int timeout = 0) = 0;
void setHandshakeReadTimeout(int timeout);
@@ -188,6 +195,8 @@ protected:
int _initWantWrite;
int _handshakeReadTimeout;
int _readTimeout;
+
+ ConnectPhase _phase;
};
}