Detect and handle OpenSSL 1.1

OpenSSL 1.1 supports most of the native threading libraries, including
pthread. This means that only versions before 1.1 need the thread handling
code.
This commit is contained in:
Markus Mäkelä 2017-06-27 00:29:12 +03:00
parent 92d9356968
commit 469b432ebe
2 changed files with 7 additions and 1 deletions

View File

@ -84,8 +84,10 @@ if(NOT OPENSSL_FOUND)
else()
if(OPENSSL_VERSION VERSION_LESS 1 AND NOT FORCE_OPENSSL100)
add_definitions("-DOPENSSL_0_9")
else()
elseif(OPENSSL_VERSION VERSION_LESS 1.1)
add_definitions("-DOPENSSL_1_0")
else()
add_definitions("-DOPENSSL_1_1")
endif()
endif()

View File

@ -189,6 +189,7 @@ static void modules_process_finish();
static bool modules_thread_init();
static void modules_thread_finish();
#ifndef OPENSSL_1_1
/** SSL multi-threading functions and structures */
static SPINLOCK* ssl_locks;
@ -270,6 +271,7 @@ static void maxscale_ssl_id(CRYPTO_THREADID* id)
CRYPTO_THREADID_set_numeric(id, pthread_self());
}
#endif
#endif
/**
* Handler for SIGHUP signal. Reload the configuration for the
@ -1741,6 +1743,7 @@ int main(int argc, char **argv)
SSL_load_error_strings();
OPENSSL_add_all_algorithms_noconf();
#ifndef OPENSSL_1_1
numlocks = CRYPTO_num_locks();
if ((ssl_locks = (SPINLOCK*)MXS_MALLOC(sizeof(SPINLOCK) * (numlocks + 1))) == NULL)
{
@ -1760,6 +1763,7 @@ int main(int argc, char **argv)
CRYPTO_THREADID_set_callback(maxscale_ssl_id);
#else
CRYPTO_set_id_callback(pthread_self);
#endif
#endif
/**