summaryrefslogtreecommitdiff
path: root/cpp/src/IceSSL/OpenSSLEngine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceSSL/OpenSSLEngine.cpp')
-rw-r--r--cpp/src/IceSSL/OpenSSLEngine.cpp7
1 files changed, 3 insertions, 4 deletions
diff --git a/cpp/src/IceSSL/OpenSSLEngine.cpp b/cpp/src/IceSSL/OpenSSLEngine.cpp
index a7232b06f7f..04409461957 100644
--- a/cpp/src/IceSSL/OpenSSLEngine.cpp
+++ b/cpp/src/IceSSL/OpenSSLEngine.cpp
@@ -63,11 +63,10 @@ public:
// the need to use a custom thread callback.
//
#if OPENSSL_VERSION_NUMBER < 0x10100000L
- CRYPTO_set_locking_callback(0);
- CRYPTO_set_id_callback(0);
-
if(locks)
{
+ CRYPTO_set_locking_callback(0);
+ CRYPTO_set_id_callback(0);
delete[] locks;
locks = 0;
}
@@ -223,7 +222,7 @@ OpenSSLEngine::OpenSSLEngine(const CommunicatorPtr& communicator) :
//
// Create the mutexes and set the callbacks.
//
- if(!locks)
+ if(!locks && !CRYPTO_get_id_callback())
{
locks = new IceUtil::Mutex[CRYPTO_num_locks()];
CRYPTO_set_locking_callback(IceSSL_opensslLockCallback);