Mercurial > dovecot > core-2.2
changeset 21481:0f676a75b649
lib-ssl-iostream: Detect whether to call ERR_remove_[thread_]state() via configure
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sun, 05 Feb 2017 21:38:33 +0200 |
parents | 6660ab6ba3a3 |
children | d7227df3624d |
files | configure.ac src/lib-ssl-iostream/dovecot-openssl-common.c |
diffstat | 2 files changed, 13 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/configure.ac Sun Feb 05 21:31:08 2017 +0200 +++ b/configure.ac Sun Feb 05 21:38:33 2017 +0200 @@ -1769,6 +1769,12 @@ AC_DEFINE(HAVE_SSL_NEW_MEM_FUNCS,, [Define if CRYPTO_set_mem_functions has new style parameters]) fi + AC_CHECK_LIB(ssl, ERR_remove_thread_state, [ + AC_DEFINE(HAVE_OPENSSL_ERR_REMOVE_THREAD_STATE,, [Define if you have ERR_remove_thread_state]) + ],, $SSL_LIBS) + AC_CHECK_LIB(ssl, OPENSSL_thread_stop, [ + AC_DEFINE(HAVE_OPENSSL_AUTO_THREAD_DEINIT,, [Define if OpenSSL performs thread cleanup automatically]) + ],, $SSL_LIBS) AC_CHECK_LIB(ssl, OPENSSL_cleanup, [ AC_DEFINE(HAVE_OPENSSL_CLEANUP,, [OpenSSL supports OPENSSL_cleanup()]) ],, $SSL_LIBS)
--- a/src/lib-ssl-iostream/dovecot-openssl-common.c Sun Feb 05 21:31:08 2017 +0200 +++ b/src/lib-ssl-iostream/dovecot-openssl-common.c Sun Feb 05 21:38:33 2017 +0200 @@ -95,10 +95,14 @@ ENGINE_cleanup(); EVP_cleanup(); CRYPTO_cleanup_all_ex_data(); -#if OPENSSL_VERSION_NUMBER < 0x10000000L +#ifdef HAVE_OPENSSL_AUTO_THREAD_DEINIT + /* no cleanup needed */ +#elif defined(HAVE_OPENSSL_ERR_REMOVE_THREAD_STATE) + /* This was marked as deprecated in v1.1. */ + ERR_remove_thread_state(NULL); +#else + /* This was deprecated by ERR_remove_thread_state(NULL) in v1.0.0. */ ERR_remove_state(0); -#elif OPENSSL_VERSION_NUMBER < 0x10100000L - ERR_remove_thread_state(NULL); #endif ERR_free_strings(); #ifdef HAVE_OPENSSL_CLEANUP