diff --git a/configure.ac b/configure.ac index 1c64e432..a101a285 100644 --- a/configure.ac +++ b/configure.ac @@ -368,6 +368,7 @@ if test "x$SSL" != "xno"; then AC_LINK_IFELSE([ AC_LANG_PROGRAM([[ #include + #include ]], [[ SSL_CTX* ctx = SSL_CTX_new(TLSv1_method()); SSL* ssl = SSL_new(ctx); diff --git a/src/Utils.cpp b/src/Utils.cpp index cced5683..425831ad 100644 --- a/src/Utils.cpp +++ b/src/Utils.cpp @@ -27,6 +27,8 @@ #include #ifdef HAVE_LIBSSL #include +#include +#include #endif /* HAVE_LIBSSL */ #include #include diff --git a/src/main.cpp b/src/main.cpp index 6ea10ec9..7084f686 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -46,9 +46,15 @@ static void locking_callback(int mode, int type, const char* file, int line) { } } +#if OPENSSL_VERSION_NUMBER >= 0x10000000 +static void thread_id_callback(CRYPTO_THREADID *id) { + CRYPTO_THREADID_set_numeric(id, (unsigned long)pthread_self()); +} +#else static unsigned long thread_id_callback() { return (unsigned long)pthread_self(); } +#endif static CRYPTO_dynlock_value* dyn_create_callback(const char* file, int line) { return (CRYPTO_dynlock_value*)new CMutex; @@ -78,7 +84,11 @@ static void thread_setup() { for (std::unique_ptr& mtx : lock_cs) mtx = std::unique_ptr(new CMutex()); +#if OPENSSL_VERSION_NUMBER >= 0x10000000 + CRYPTO_THREADID_set_callback(&thread_id_callback); +#else CRYPTO_set_id_callback(&thread_id_callback); +#endif CRYPTO_set_locking_callback(&locking_callback); CRYPTO_set_dynlock_create_callback(&dyn_create_callback);