+4676. [cleanup] Allow BIND to be built using OpenSSL 1.0.X with
+ deprecated functions removed. [RT #45706]
+
4675. [cleanup] Don't use C++ keyword class. [RT #45726]
4674. [func] "dig +sigchase", and related options "+topdown" and
}
#endif
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
static void
lock_callback(int mode, int type, const char *file, int line) {
UNUSED(file);
else
UNLOCK(&locks[type]);
}
+#endif
+#if OPENSSL_VERSION_NUMBER < 0x10000000L
static unsigned long
id_callback(void) {
return ((unsigned long)isc_thread_self());
#endif
}
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER < 0x10100000L
+static void
+_set_thread_id(CRYPTO_THREADID *id)
+{
+ CRYPTO_THREADID_set_numeric(id, (unsigned long)pthread_self());
+}
+#endif
+
isc_result_t
dst__openssl_init(const char *engine) {
isc_result_t result;
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
CRYPTO_cleanup_all_ex_data();
#endif
ERR_clear_error();
-#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
+#if OPENSSL_VERSION_NUMBER >= 0x10000000L && OPENSSL_VERSION_NUMBER < 0x10100000L
+ ERR_remove_thread_state(NULL);
+#elif OPENSSL_VERSION_NUMBER < 0x10000000L || defined(LIBRESSL_VERSION_NUMBER)
ERR_remove_state(0);
#endif
ERR_free_strings();