--- CMakeLists.txt.orig 2021-12-01 02:41:05 UTC +++ CMakeLists.txt @@ -82,6 +82,20 @@ endmacro() tristate_option(OPENSSL "Support SSL") if(WANT_OPENSSL) find_package(OpenSSL ${TRISTATE_OPENSSL_REQUIRED}) + + if(OPENSSL_FOUND) + # SSL_SESSION was made opaque in OpenSSL 1.1.0; + # LibreSSL gained that function later too. + # TODO: maybe remove this check at some point, and stop supporting old + # libssl versions + function(check_SSL_SESSION_get0_cipher) + set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_LIBRARIES}) + set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_INCLUDE_DIR}) + check_cxx_symbol_exists(SSL_SESSION_get0_cipher openssl/ssl.h + HAVE_SSL_SESSION_get0_cipher) + endfunction() + check_SSL_SESSION_get0_cipher() + endif() endif() set(HAVE_LIBSSL "${OPENSSL_FOUND}") --- include/znc/zncconfig.h.cmake.in.orig 2021-12-01 02:42:16 UTC +++ include/znc/zncconfig.h.cmake.in @@ -31,6 +31,7 @@ #define HAVE_PTHREAD 1 #cmakedefine HAVE_THREADED_DNS 1 #cmakedefine HAVE_LIBSSL 1 +#cmakedefine HAVE_SSL_SESSION_get0_cipher 1 #cmakedefine HAVE_IPV6 1 #cmakedefine HAVE_ZLIB 1 #cmakedefine HAVE_I18N 1 --- modules/schat.cpp.orig 2021-12-01 02:42:43 UTC +++ modules/schat.cpp @@ -25,8 +25,7 @@ #include #include -#if !defined(OPENSSL_VERSION_NUMBER) || defined(LIBRESSL_VERSION_NUMBER) || \ - OPENSSL_VERSION_NUMBER < 0x10100007 +#ifndef HAVE_SSL_SESSION_get0_cipher /* SSL_SESSION was made opaque in OpenSSL 1.1.0, cipher accessor was added 2 weeks before the public release. See openssl/openssl@e92813234318635639dba0168c7ef5568757449b. */