--- a/util/net_help.c
+++ b/util/net_help.c
@@ -1049,10 +1049,10 @@ void* outgoing_ssl_fd(void* sslctx, int
 static lock_basic_type *ub_openssl_locks = NULL;

 /** callback that gets thread id for openssl */
-static unsigned long
-ub_crypto_id_cb(void)
+static void
+ub_crypto_id_cb(CRYPTO_THREADID *id)
 {
-	return (unsigned long)log_thread_get();
+	CRYPTO_THREADID_set_numeric(id, (unsigned long)log_thread_get());
 }

 static void
@@ -1078,7 +1078,7 @@ int ub_openssl_lock_init(void)
 	for(i=0; i<CRYPTO_num_locks(); i++) {
 		lock_basic_init(&ub_openssl_locks[i]);
 	}
-	CRYPTO_set_id_callback(&ub_crypto_id_cb);
+	CRYPTO_THREADID_set_callback(&ub_crypto_id_cb);
 	CRYPTO_set_locking_callback(&ub_crypto_lock_cb);
 #endif /* OPENSSL_THREADS */
 	return 1;
@@ -1090,7 +1090,7 @@ void ub_openssl_lock_delete(void)
 	int i;
 	if(!ub_openssl_locks)
 		return;
-	CRYPTO_set_id_callback(NULL);
+	CRYPTO_THREADID_set_callback(NULL);
 	CRYPTO_set_locking_callback(NULL);
 	for(i=0; i<CRYPTO_num_locks(); i++) {
 		lock_basic_destroy(&ub_openssl_locks[i]);