aboutsummaryrefslogtreecommitdiffstats
path: root/ext/openssl/ossl_ssl.c
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2016-06-10 10:18:13 +0000
committerKazuki Yamaguchi <k@rhe.jp>2016-06-11 11:37:48 +0900
commitb95b2da23bed6b69cfbb1b75f0e6db73616533d4 (patch)
tree12b2f2718f48b9bc516612dccf63d0284e656607 /ext/openssl/ossl_ssl.c
parent0cfe60ecebea5808c8d97f3c98227c37d327d67d (diff)
downloadruby-b95b2da23bed6b69cfbb1b75f0e6db73616533d4.tar.gz
openssl: enable SSLContext read_ahead accessortopic/read-ahead
Diffstat (limited to 'ext/openssl/ossl_ssl.c')
-rw-r--r--ext/openssl/ossl_ssl.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c
index 5876946183..d65888673d 100644
--- a/ext/openssl/ossl_ssl.c
+++ b/ext/openssl/ossl_ssl.c
@@ -1074,6 +1074,45 @@ ossl_sslctx_set_ecdh_curves(VALUE self, VALUE arg)
/*
* call-seq:
+ * ctx.read_ahead -> true or false
+ */
+static VALUE
+ossl_sslctx_get_read_ahead(VALUE self)
+{
+#if defined(HAVE_SSL_CTX_GET_READ_AHEAD)
+ SSL_CTX *ctx;
+
+ GetSSLCTX(self, ctx);
+
+ return SSL_CTX_get_read_ahead(ctx) ? Qtrue : Qfalse;
+#else
+ return Qfalse;
+#endif
+}
+
+/*
+ * call-seq:
+ * ctx.read_ahead = boolean -> boolean
+ */
+#if defined(HAVE_SSL_CTX_SET_READ_AHEAD)
+static VALUE
+ossl_sslctx_set_read_ahead(VALUE self, VALUE boolean)
+{
+ SSL_CTX *ctx;
+
+ GetSSLCTX(self, ctx);
+ rb_check_frozen(self);
+
+ SSL_CTX_set_read_ahead(ctx, RTEST(boolean));
+
+ return boolean;
+}
+#else
+#define ossl_sslctx_set_read_ahead rb_f_notimplement
+#endif
+
+/*
+ * call-seq:
* ctx.security_level -> Integer
*
* Returns the security level for the context.
@@ -2449,6 +2488,8 @@ Init_ossl_ssl(void)
rb_define_method(cSSLContext, "ciphers", ossl_sslctx_get_ciphers, 0);
rb_define_method(cSSLContext, "ciphers=", ossl_sslctx_set_ciphers, 1);
rb_define_method(cSSLContext, "ecdh_curves=", ossl_sslctx_set_ecdh_curves, 1);
+ rb_define_method(cSSLContext, "read_ahead", ossl_sslctx_get_read_ahead, 0);
+ rb_define_method(cSSLContext, "read_ahead=", ossl_sslctx_set_read_ahead, 1);
rb_define_method(cSSLContext, "security_level", ossl_sslctx_get_security_level, 0);
rb_define_method(cSSLContext, "security_level=", ossl_sslctx_set_security_level, 1);