aboutsummaryrefslogtreecommitdiffstats
path: root/ext/openssl/ossl_ssl.c
diff options
context:
space:
mode:
authorSamuel Williams <samuel.williams@oriontransfer.co.nz>2019-11-27 11:26:41 +0900
committerSamuel Williams <samuel.williams@oriontransfer.co.nz>2019-11-27 11:26:41 +0900
commitb4e96fc4abc3bb3318bc1aa48b4413da4e932bb4 (patch)
tree107b364967f4ee69f5bcfccd3bf40521173f8ae2 /ext/openssl/ossl_ssl.c
parentf48885c9400c272fa2647c47a891a515b97cda59 (diff)
downloadruby-openssl-b4e96fc4abc3bb3318bc1aa48b4413da4e932bb4.tar.gz
Pull relevant changes from `ruby/ext/openssl`.
Diff was generated: git diff --output openssl.patch 93bc10272734cbbb9197470ca629cc4ea019f6f0 ext/openssl/*.c ext/openssl/*.h ext/openssl/**/*.rb Appled using `patch -p1 < openssl.patch`.
Diffstat (limited to 'ext/openssl/ossl_ssl.c')
-rw-r--r--ext/openssl/ossl_ssl.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c
index f709b655..83df2478 100644
--- a/ext/openssl/ossl_ssl.c
+++ b/ext/openssl/ossl_ssl.c
@@ -380,7 +380,7 @@ ossl_call_session_get_cb(VALUE ary)
}
static SSL_SESSION *
-#if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
+#if (!defined(LIBRESSL_VERSION_NUMBER) ? OPENSSL_VERSION_NUMBER >= 0x10100000 : LIBRESSL_VERSION_NUMBER >= 0x2080000f)
ossl_sslctx_session_get_cb(SSL *ssl, const unsigned char *buf, int len, int *copy)
#else
ossl_sslctx_session_get_cb(SSL *ssl, unsigned char *buf, int len, int *copy)
@@ -592,7 +592,7 @@ ssl_renegotiation_cb(const SSL *ssl)
#if !defined(OPENSSL_NO_NEXTPROTONEG) || \
defined(HAVE_SSL_CTX_SET_ALPN_SELECT_CB)
static VALUE
-ssl_npn_encode_protocol_i(VALUE cur, VALUE encoded)
+ssl_npn_encode_protocol_i(RB_BLOCK_CALL_FUNC_ARGLIST(cur, encoded))
{
int len = RSTRING_LENINT(cur);
char len_byte;
@@ -1885,6 +1885,7 @@ ossl_ssl_read_internal(int argc, VALUE *argv, VALUE self, int nonblock)
rb_eof_error();
}
}
+ /* fall through */
default:
ossl_raise(eSSLError, "SSL_read");
}
@@ -1894,8 +1895,13 @@ ossl_ssl_read_internal(int argc, VALUE *argv, VALUE self, int nonblock)
ID meth = nonblock ? rb_intern("read_nonblock") : rb_intern("sysread");
rb_warning("SSL session is not started yet.");
- if (nonblock)
- return rb_funcall(io, meth, 3, len, str, opts);
+ if (nonblock) {
+ VALUE argv[3];
+ argv[0] = len;
+ argv[1] = str;
+ argv[2] = opts;
+ return rb_funcallv_kw(io, meth, 3, argv, RB_PASS_KEYWORDS);
+ }
else
return rb_funcall(io, meth, 2, len, str);
}
@@ -1985,8 +1991,12 @@ ossl_ssl_write_internal(VALUE self, VALUE str, VALUE opts)
rb_intern("write_nonblock") : rb_intern("syswrite");
rb_warning("SSL session is not started yet.");
- if (nonblock)
- return rb_funcall(io, meth, 2, str, opts);
+ if (nonblock) {
+ VALUE argv[2];
+ argv[0] = str;
+ argv[1] = opts;
+ return rb_funcallv_kw(io, meth, 2, argv, RB_PASS_KEYWORDS);
+ }
else
return rb_funcall(io, meth, 1, str);
}