|
|
- --- a/lib/dns/openssl_link.c 2017-07-07 09:02:06.000000000 -0600
- +++ b/lib/dns/openssl_link.c 2017-08-07 10:23:18.886182931 -0600
- @@ -177,6 +177,14 @@ mem_realloc(void *ptr, size_t size FLARG
- #endif
- }
-
- +#if OPENSSL_VERSION_NUMBER >= 0x10000000L
- +static void
- +_set_thread_id(CRYPTO_THREADID *id)
- +{
- + CRYPTO_THREADID_set_numeric(id, pthread_self());
- +}
- +#endif
- +
- isc_result_t
- dst__openssl_init(const char *engine) {
- isc_result_t result;
- @@ -193,7 +203,7 @@ dst__openssl_init(const char *engine) {
- CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
- #endif
- CRYPTO_set_mem_functions(mem_alloc, mem_realloc, mem_free);
- -#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
- +#if defined(OPENSSL_VERSION_NUMBER) || defined(LIBRESSL_VERSION_NUMBER)
- nlocks = CRYPTO_num_locks();
- locks = mem_alloc(sizeof(isc_mutex_t) * nlocks FILELINE);
- if (locks == NULL)
- @@ -202,7 +204,11 @@ dst__openssl_init(const char *engine) {
- if (result != ISC_R_SUCCESS)
- goto cleanup_mutexalloc;
- CRYPTO_set_locking_callback(lock_callback);
- +# if OPENSSL_VERSION_NUMBER >= 0x10000000L
- + CRYPTO_THREADID_set_callback(_set_thread_id);
- +# else
- CRYPTO_set_id_callback(id_callback);
- +# endif
-
- ERR_load_crypto_strings();
- #endif
- @@ -323,7 +335,9 @@ dst__openssl_destroy(void) {
- CRYPTO_cleanup_all_ex_data();
- #endif
- ERR_clear_error();
- -#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
- +#if OPENSSL_VERSION >= 0x10000000L
- + ERR_remove_thread_state(NULL);
- +#elif OPENSSL_VERSION_NUMBER < 0x10000000L || defined(LIBRESSL_VERSION_NUMBER)
- ERR_remove_state(0);
- #endif
- ERR_free_strings();
|