8382319fbc841a17cbe57981c95a1f0e94e199f6
[feed/packages.git] / net / bind / patches / 003-openssl-1.1.0-thread-fix.patch
1 --- a/lib/dns/openssl_link.c 2017-07-07 09:02:06.000000000 -0600
2 +++ b/lib/dns/openssl_link.c 2017-08-07 10:23:18.886182931 -0600
3 @@ -177,6 +177,14 @@ mem_realloc(void *ptr, size_t size FLARG
4 #endif
5 }
6
7 +#if OPENSSL_VERSION_NUMBER >= 0x10000000L
8 +static void
9 +_set_thread_id(CRYPTO_THREADID *id)
10 +{
11 + CRYPTO_THREADID_set_numeric(id, pthread_self());
12 +}
13 +#endif
14 +
15 isc_result_t
16 dst__openssl_init(const char *engine) {
17 isc_result_t result;
18 @@ -193,7 +203,7 @@ dst__openssl_init(const char *engine) {
19 CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
20 #endif
21 CRYPTO_set_mem_functions(mem_alloc, mem_realloc, mem_free);
22 -#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
23 +#if defined(OPENSSL_VERSION_NUMBER) || defined(LIBRESSL_VERSION_NUMBER)
24 nlocks = CRYPTO_num_locks();
25 locks = mem_alloc(sizeof(isc_mutex_t) * nlocks FILELINE);
26 if (locks == NULL)
27 @@ -202,7 +204,11 @@ dst__openssl_init(const char *engine) {
28 if (result != ISC_R_SUCCESS)
29 goto cleanup_mutexalloc;
30 CRYPTO_set_locking_callback(lock_callback);
31 +# if OPENSSL_VERSION_NUMBER >= 0x10000000L
32 + CRYPTO_THREADID_set_callback(_set_thread_id);
33 +# else
34 CRYPTO_set_id_callback(id_callback);
35 +# endif
36
37 ERR_load_crypto_strings();
38 #endif
39 @@ -323,7 +335,9 @@ dst__openssl_destroy(void) {
40 CRYPTO_cleanup_all_ex_data();
41 #endif
42 ERR_clear_error();
43 -#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
44 +#if OPENSSL_VERSION >= 0x10000000L
45 + ERR_remove_thread_state(NULL);
46 +#elif OPENSSL_VERSION_NUMBER < 0x10000000L || defined(LIBRESSL_VERSION_NUMBER)
47 ERR_remove_state(0);
48 #endif
49 ERR_free_strings();