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 8fb9b79dbb
commit 750f2ef96c
2 changed files with 7 additions and 1 deletions

View File

@ -78,8 +78,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

@ -203,6 +203,7 @@ const DEBUG_ARGUMENT debug_arguments[] =
{NULL, NULL, NULL}
};
#ifndef OPENSSL_1_1
/** SSL multi-threading functions and structures */
static SPINLOCK* ssl_locks;
@ -284,6 +285,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
@ -1734,6 +1736,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)
{
@ -1753,6 +1756,7 @@ int main(int argc, char **argv)
CRYPTO_THREADID_set_callback(maxscale_ssl_id);
#else
CRYPTO_set_id_callback(pthread_self);
#endif
#endif
/**