diff options
author | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2019-11-27 11:43:30 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2020-02-24 19:15:27 +0900 |
commit | 9cfe51cc5ce4cb1b09366299f059dee949235541 (patch) | |
tree | 11e1bb2ca05c6dddade89fb0db69dfb55599882f /ext | |
parent | d75456a5584373d55967cbcd8f97555cbbf434e0 (diff) | |
download | ruby-openssl-9cfe51cc5ce4cb1b09366299f059dee949235541.tar.gz |
Restore compatibility with older versions of Ruby.
[ Originally landed on as commit b4e96fc4abc3. This is a backport to the
2.0 branch. ]
`RB_PASS_KEYWORDS` is not always available.
Diffstat (limited to 'ext')
-rw-r--r-- | ext/openssl/ossl_ssl.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c index 4ddf0ad6..6a3e21b2 100644 --- a/ext/openssl/ossl_ssl.c +++ b/ext/openssl/ossl_ssl.c @@ -1737,18 +1737,24 @@ ossl_ssl_read_internal(int argc, VALUE *argv, VALUE self, int nonblock) } } else { - ID meth = nonblock ? rb_intern("read_nonblock") : rb_intern("sysread"); + ID meth = nonblock ? rb_intern("read_nonblock") : rb_intern("sysread"); - rb_warning("SSL session is not started yet."); - if (nonblock) { + rb_warning("SSL session is not started yet."); +#if defined(RB_PASS_KEYWORDS) + 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); +#else + if (nonblock) { + return rb_funcall(io, meth, 3, len, str, opts); + } +#endif + else + return rb_funcall(io, meth, 2, len, str); } end: @@ -1835,15 +1841,21 @@ ossl_ssl_write_internal(VALUE self, VALUE str, VALUE opts) ID meth = nonblock ? rb_intern("write_nonblock") : rb_intern("syswrite"); - rb_warning("SSL session is not started yet."); - if (nonblock) { + rb_warning("SSL session is not started yet."); +#if defined(RB_PASS_KEYWORDS) + 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); +#else + if (nonblock) { + return rb_funcall(io, meth, 2, str, opts); + } +#endif + else + return rb_funcall(io, meth, 1, str); } end: |