GUACAMOLE-205: Use semantically-named macro rather than repeatedly and explicitly check OpenSSL version.

This commit is contained in:
Michael Jumper 2017-02-28 12:01:43 -08:00
parent 98a5faaa77
commit 270d51d4d4
3 changed files with 26 additions and 6 deletions

View File

@ -261,6 +261,26 @@ then
[Whether libssl provides RSA_get0_key()])],, [Whether libssl provides RSA_get0_key()])],,
[#include <openssl/rsa.h>]) [#include <openssl/rsa.h>])
# OpenSSL 1.1 does away with explicit threading callbacks
AC_MSG_CHECKING([whether libssl requires threading callbacks])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([[
#include <openssl/opensslv.h>
#if OPENSSL_VERSION_NUMBER < 0x10100000L
#error Threading callbacks required.
#endif
int main() {
return 0;
}
]])],
[AC_MSG_RESULT([no])],
[AC_MSG_RESULT([yes])
AC_DEFINE([OPENSSL_REQUIRES_THREADING_CALLBACKS],,
[Whether OpenSSL requires explicit threading callbacks for threadsafety])])
fi fi
fi fi

View File

@ -45,7 +45,7 @@
GCRY_THREAD_OPTION_PTHREAD_IMPL; GCRY_THREAD_OPTION_PTHREAD_IMPL;
#endif #endif
#if OPENSSL_VERSION_NUMBER < 0x10100000L #ifdef OPENSSL_REQUIRES_THREADING_CALLBACKS
/** /**
* Array of mutexes, used by OpenSSL. * Array of mutexes, used by OpenSSL.
*/ */
@ -147,7 +147,7 @@ int guac_common_ssh_init(guac_client* client) {
} }
#endif #endif
#if OPENSSL_VERSION_NUMBER < 0x10100000L #ifdef OPENSSL_REQUIRES_THREADING_CALLBACKS
/* Init threadsafety in OpenSSL */ /* Init threadsafety in OpenSSL */
guac_common_ssh_openssl_init_locks(CRYPTO_num_locks()); guac_common_ssh_openssl_init_locks(CRYPTO_num_locks());
CRYPTO_set_id_callback(guac_common_ssh_openssl_id_callback); CRYPTO_set_id_callback(guac_common_ssh_openssl_id_callback);
@ -167,7 +167,7 @@ int guac_common_ssh_init(guac_client* client) {
} }
void guac_common_ssh_uninit() { void guac_common_ssh_uninit() {
#if OPENSSL_VERSION_NUMBER < 0x10100000L #ifdef OPENSSL_REQUIRES_THREADING_CALLBACKS
guac_common_ssh_openssl_free_locks(CRYPTO_num_locks()); guac_common_ssh_openssl_free_locks(CRYPTO_num_locks());
#endif #endif
} }

View File

@ -153,7 +153,7 @@ static int daemonize() {
} }
#ifdef ENABLE_SSL #ifdef ENABLE_SSL
#if OPENSSL_VERSION_NUMBER < 0x10100000L #ifdef OPENSSL_REQUIRES_THREADING_CALLBACKS
/** /**
* Array of mutexes, used by OpenSSL. * Array of mutexes, used by OpenSSL.
*/ */
@ -361,7 +361,7 @@ int main(int argc, char* argv[]) {
guacd_log(GUAC_LOG_INFO, "Communication will require SSL/TLS."); guacd_log(GUAC_LOG_INFO, "Communication will require SSL/TLS.");
#if OPENSSL_VERSION_NUMBER < 0x10100000L #ifdef OPENSSL_REQUIRES_THREADING_CALLBACKS
/* Init threadsafety in OpenSSL */ /* Init threadsafety in OpenSSL */
guacd_openssl_init_locks(CRYPTO_num_locks()); guacd_openssl_init_locks(CRYPTO_num_locks());
CRYPTO_set_id_callback(guacd_openssl_id_callback); CRYPTO_set_id_callback(guacd_openssl_id_callback);
@ -494,7 +494,7 @@ int main(int argc, char* argv[]) {
#ifdef ENABLE_SSL #ifdef ENABLE_SSL
if (ssl_context != NULL) { if (ssl_context != NULL) {
#if OPENSSL_VERSION_NUMBER < 0x10100000L #ifdef OPENSSL_REQUIRES_THREADING_CALLBACKS
guacd_openssl_free_locks(CRYPTO_num_locks()); guacd_openssl_free_locks(CRYPTO_num_locks());
#endif #endif
SSL_CTX_free(ssl_context); SSL_CTX_free(ssl_context);