--- main/libasteriskssl.c (Asterisk 15.4) +++ main/libasteriskssl.c (working copy) @@ -1,7 +1,7 @@ /* * Asterisk -- An open source telephony toolkit. * - * Copyright (C) 2009-2012, Digium, Inc. + * Copyright (C) 2009-2018, Digium, Inc. * * Russell Bryant * @@ -23,26 +23,28 @@ * \author Russell Bryant */ -/*** MODULEINFO - core - ***/ - #include "asterisk.h" -#include "asterisk/_private.h" /* ast_ssl_init() */ +#include "asterisk/_private.h" /* ast_ssl_init() */ #ifdef HAVE_OPENSSL -#include -#include +#include /* for OPENSSL_VERSION_NUMBER */ #endif #if defined(HAVE_OPENSSL) && \ - (!defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)) + (defined(LIBRESSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L) -#include +#include /* for dlerror, dlsym, RTLD_NEXT */ +#include /* for CRYPTO_num_locks, CRYPTO_set_id_call... */ +#include /* for ERR_free_strings */ +#include /* for SSL_library_init, SSL_load_error_str... */ +#if OPENSSL_VERSION_NUMBER < 0x10000000L +#include /* for pthread_self */ +#endif -#include "asterisk/utils.h" -#include "asterisk/lock.h" +#include "asterisk/lock.h" /* for ast_mutex_t, ast_mutex_init, ast_mut... */ +#include "asterisk/logger.h" /* for ast_debug, ast_log, LOG_ERROR */ +#include "asterisk/utils.h" /* for ast_calloc */ #define get_OpenSSL_function(func) do { real_##func = dlsym(RTLD_NEXT, __stringify(func)); } while(0) @@ -52,10 +54,12 @@ static int ssl_num_locks; +#if OPENSSL_VERSION_NUMBER < 0x10000000L static unsigned long ssl_threadid(void) { return (unsigned long) pthread_self(); } +#endif static void ssl_lock(int mode, int n, const char *file, int line) { @@ -92,6 +96,7 @@ #endif } +#if OPENSSL_VERSION_NUMBER < 0x10000000L void CRYPTO_set_id_callback(unsigned long (*func)(void)) { #if defined(AST_DEVMODE) @@ -100,6 +105,7 @@ } #endif } +#endif void CRYPTO_set_locking_callback(void (*func)(int mode,int type, const char *file, int line)) { @@ -125,7 +131,9 @@ { unsigned int i; int (*real_SSL_library_init)(void); +#if OPENSSL_VERSION_NUMBER < 0x10000000L void (*real_CRYPTO_set_id_callback)(unsigned long (*)(void)); +#endif void (*real_CRYPTO_set_locking_callback)(void (*)(int, int, const char *, int)); void (*real_SSL_load_error_strings)(void); const char *errstr; @@ -145,6 +153,7 @@ /* Make OpenSSL usage thread-safe. */ +#if OPENSSL_VERSION_NUMBER < 0x10000000L dlerror(); get_OpenSSL_function(CRYPTO_set_id_callback); if ((errstr = dlerror()) != NULL) { @@ -156,6 +165,7 @@ } else { real_CRYPTO_set_id_callback(ssl_threadid); } +#endif dlerror(); get_OpenSSL_function(CRYPTO_set_locking_callback);