aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2016-12-18 01:02:28 +0900
committerKazuki Yamaguchi <k@rhe.jp>2016-12-18 01:02:28 +0900
commitfd2ea0c41d55f3d0b34edb1d25c673bc004f6913 (patch)
tree6c4db1057756c870e7639755e9a7baa882933c74
parent114d3d57a98ee8dc80b2548ff693e5bf7e34b53c (diff)
downloadruby-openssl-fd2ea0c41d55f3d0b34edb1d25c673bc004f6913.tar.gz
ssl: check for SSL_CTX_clear_options()
SSL_CTX_clear_options() first appeared in OpenSSL 0.9.8m. Add alternative macro definition for ancient versions of OpenSSL. http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/78693
-rw-r--r--ext/openssl/extconf.rb1
-rw-r--r--ext/openssl/openssl_missing.h4
2 files changed, 5 insertions, 0 deletions
diff --git a/ext/openssl/extconf.rb b/ext/openssl/extconf.rb
index 60132b35..73a458ba 100644
--- a/ext/openssl/extconf.rb
+++ b/ext/openssl/extconf.rb
@@ -81,6 +81,7 @@ engines.each { |name|
# added in 0.9.8X
have_func("EVP_CIPHER_CTX_new")
have_func("EVP_CIPHER_CTX_free")
+OpenSSL.check_func_or_macro("SSL_CTX_clear_options", "openssl/ssl.h")
# added in 1.0.0
have_func("ASN1_TIME_adj")
diff --git a/ext/openssl/openssl_missing.h b/ext/openssl/openssl_missing.h
index df27b1a8..c7a367c3 100644
--- a/ext/openssl/openssl_missing.h
+++ b/ext/openssl/openssl_missing.h
@@ -21,6 +21,10 @@ EVP_CIPHER_CTX *EVP_CIPHER_CTX_new(void);
void EVP_CIPHER_CTX_free(EVP_CIPHER_CTX *ctx);
#endif
+#if !defined(HAVE_SSL_CTX_CLEAR_OPTIONS)
+# define SSL_CTX_clear_options(ctx, op) ((ctx)->options &= ~(op))
+#endif
+
/* added in 1.0.0 */
#if !defined(HAVE_EVP_PKEY_BASE_ID)
# define EVP_PKEY_base_id(pkey) EVP_PKEY_type((pkey)->type)