From 91661b39556bc814e47a53d870ec3eb00f1e1942 Mon Sep 17 00:00:00 2001 From: Kazuki Yamaguchi Date: Wed, 20 Apr 2016 17:59:01 +0900 Subject: ext/openssl: support new threading API of OpenSSL 1.1.0 Setting locking callbacks is no longer needed. --- ext/openssl/extconf.rb | 1 + ext/openssl/ossl.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb index 2dec2fb015..2cdbc0396d 100644 --- a/ext/openssl/extconf.rb +++ b/ext/openssl/extconf.rb @@ -98,6 +98,7 @@ have_func("SSL_CTX_set_alpn_select_cb") have_func("SSL_get_server_tmp_key", ["openssl/ssl.h"]) # added in 1.1.0 +have_func("CRYPTO_lock") || $defs.push("-DHAVE_OPENSSL_110_THREADING_API") have_struct_member("SSL", "ctx", "openssl/ssl.h") || $defs.push("-DHAVE_OPAQUE_OPENSSL") have_func("BN_GENCB_new") have_func("BN_GENCB_free") diff --git a/ext/openssl/ossl.c b/ext/openssl/ossl.c index e184c9fd1a..23a7e49b6d 100644 --- a/ext/openssl/ossl.c +++ b/ext/openssl/ossl.c @@ -459,6 +459,7 @@ ossl_fips_mode_set(VALUE self, VALUE enabled) #endif } +#if !defined(HAVE_OPENSSL_110_THREADING_API) /** * Stores locks needed for OpenSSL thread safety */ @@ -546,6 +547,7 @@ static void Init_ossl_locks(void) CRYPTO_set_dynlock_lock_callback(ossl_dyn_lock_callback); CRYPTO_set_dynlock_destroy_callback(ossl_dyn_destroy_callback); } +#endif /* !HAVE_OPENSSL_110_THREADING_API */ /* * OpenSSL provides SSL, TLS and general purpose cryptography. It wraps the @@ -1144,7 +1146,9 @@ Init_openssl(void) */ ossl_s_to_der = rb_intern("to_der"); +#if !defined(HAVE_OPENSSL_110_THREADING_API) Init_ossl_locks(); +#endif /* * Init components -- cgit v1.2.3