diff --git a/src/ssl.cc b/src/ssl.cc index 9c28c7d88e8826b99776306738adc845e12312e0..9360b7f9d547a749a702d07024fa2500307ebdda 100644 --- a/src/ssl.cc +++ b/src/ssl.cc @@ -42,12 +42,11 @@ namespace ssl { // CRYPTO_LOCK is deprecated as of OpenSSL 1.1.0 LibsslGlobalLock::LibsslGlobalLock() {} -LibsslGlobalLock::~LibsslGlobalLock() {} #else // !OPENSSL_1_1_API namespace { -std::vector<std::mutex> ssl_global_locks; +std::mutex *ssl_global_locks; } // namespace namespace { @@ -61,11 +60,11 @@ void ssl_locking_cb(int mode, int type, const char *file, int line) { } // namespace LibsslGlobalLock::LibsslGlobalLock() { - if (!ssl_global_locks.empty()) { + if (ssl_global_locks) { std::cerr << "OpenSSL global lock has been already set" << std::endl; assert(0); } - ssl_global_locks = std::vector<std::mutex>(CRYPTO_num_locks()); + ssl_global_locks = new std::mutex[CRYPTO_num_locks()]; // CRYPTO_set_id_callback(ssl_thread_id); OpenSSL manual says that // if threadid_func is not specified using // CRYPTO_THREADID_set_callback(), then default implementation is @@ -73,8 +72,6 @@ LibsslGlobalLock::LibsslGlobalLock() { CRYPTO_set_locking_callback(ssl_locking_cb); } -LibsslGlobalLock::~LibsslGlobalLock() { ssl_global_locks.clear(); } - #endif // !OPENSSL_1_1_API const char *get_tls_protocol(SSL *ssl) { diff --git a/src/ssl.h b/src/ssl.h index 691748e9254c3ad7b82263aa327bdb127ee0f756..845aa2fe4e77f69e608cd6b59bdf1a752e93cc25 100644 --- a/src/ssl.h +++ b/src/ssl.h @@ -40,7 +40,6 @@ namespace ssl { class LibsslGlobalLock { public: LibsslGlobalLock(); - ~LibsslGlobalLock(); LibsslGlobalLock(const LibsslGlobalLock &) = delete; LibsslGlobalLock &operator=(const LibsslGlobalLock &) = delete; };