aboutsummaryrefslogtreecommitdiffstats
path: root/ext/openssl/ossl_ssl.c
diff options
context:
space:
mode:
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);