From c4e9d9bd662de7f575f2172c160795d452ebe709 Mon Sep 17 00:00:00 2001 From: Azat Khuzhin Date: Mon, 23 Nov 2015 18:44:03 +0300 Subject: [PATCH] sample/https-client: check for ERR_remove_thread_state() existence Fixes: freebsd 9.2 build --- CMakeLists.txt | 6 +++++- configure.ac | 4 ++++ event-config.h.cmake | 3 +++ sample/https-client.c | 4 ++++ 4 files changed, 16 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dd461adc..f130304c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -774,7 +774,11 @@ if (NOT EVENT__DISABLE_SAMPLES) time-test) if (NOT EVENT__DISABLE_OPENSSL AND OPENSSL_LIBRARIES) - # Special sample with more than one file. + set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES}) + CHECK_FUNCTION_EXISTS_EX(ERR_remove_thread_state EVENT__HAVE_ERR_REMOVE_THREAD_STATE) + set(CMAKE_REQUIRED_LIBRARIES "") + + # Special sample with more than one file. add_executable(https-client sample/https-client.c sample/openssl_hostname_validation.c diff --git a/configure.ac b/configure.ac index 0da4fef9..a0634ed7 100644 --- a/configure.ac +++ b/configure.ac @@ -763,6 +763,10 @@ fi # check if we have and should use openssl AM_CONDITIONAL(OPENSSL, [test "$enable_openssl" != "no" && test "$have_openssl" = "yes"]) +if test "x$enable_openssl" = "xyes"; then + AC_SEARCH_LIBS([ERR_remove_thread_state], [crypto], + [AC_DEFINE(HAVE_ERR_REMOVE_THREAD_STATE, 1, [Define to 1 if you have ERR_remove_thread_stat().])]) +fi # Add some more warnings which we use in development but not in the # released versions. (Some relevant gcc versions can't handle these.) diff --git a/event-config.h.cmake b/event-config.h.cmake index 1efb07ad..3a575c75 100644 --- a/event-config.h.cmake +++ b/event-config.h.cmake @@ -496,4 +496,7 @@ #cmakedefine EVENT__NEED_DLLIMPORT ${EVENT__NEED_DLLIMPORT} +/* Define to 1 if you have ERR_remove_thread_stat(). */ +#cmakedefine EVENT__HAVE_ERR_REMOVE_THREAD_STATE 1 + #endif diff --git a/sample/https-client.c b/sample/https-client.c index c28a4ad8..cbe0b930 100644 --- a/sample/https-client.c +++ b/sample/https-client.c @@ -471,7 +471,11 @@ cleanup: EVP_cleanup(); ERR_free_strings(); +#ifdef EVENT__HAVE_ERR_REMOVE_THREAD_STATE ERR_remove_thread_state(NULL); +#else + ERR_remove_state(0); +#endif CRYPTO_cleanup_all_ex_data(); sk_SSL_COMP_free(SSL_COMP_get_compression_methods());