Skip to content

Commit 62fd3e4

Browse files
isolating read/write ssl ops
1 parent a8caa63 commit 62fd3e4

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

ext/openssl/ossl_ssl.c

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1732,6 +1732,22 @@ no_exception_p(VALUE opts)
17321732
#endif
17331733

17341734

1735+
int ossl_ssl_connect_impl(SSL *ssl)
1736+
{
1737+
return SSL_connect(ssl);
1738+
}
1739+
1740+
int ossl_ssl_read_impl(SSL *ssl, VALUE str, int ilen)
1741+
{
1742+
return SSL_read(ssl, RSTRING_PTR(str), ilen);
1743+
}
1744+
1745+
int ossl_ssl_write_impl(SSL *ssl, VALUE tmp, int num)
1746+
{
1747+
return SSL_write(ssl, RSTRING_PTR(tmp), num);
1748+
}
1749+
1750+
17351751
static void
17361752
io_wait_writable(VALUE io)
17371753
{
@@ -1848,7 +1864,7 @@ ossl_ssl_connect(VALUE self)
18481864
{
18491865
ossl_ssl_setup(self);
18501866

1851-
return ossl_start_ssl(self, SSL_connect, "SSL_connect", Qfalse);
1867+
return ossl_start_ssl(self, ossl_ssl_connect_impl, "SSL_connect", Qfalse);
18521868
}
18531869

18541870
/*
@@ -1881,7 +1897,7 @@ ossl_ssl_connect_nonblock(int argc, VALUE *argv, VALUE self)
18811897

18821898
ossl_ssl_setup(self);
18831899

1884-
return ossl_start_ssl(self, SSL_connect, "SSL_connect", opts);
1900+
return ossl_start_ssl(self, ossl_ssl_connect_impl, "SSL_connect", opts);
18851901
}
18861902

18871903
/*
@@ -1966,7 +1982,7 @@ ossl_ssl_read_internal(int argc, VALUE *argv, VALUE self, int nonblock)
19661982

19671983
rb_str_locktmp(str);
19681984
for (;;) {
1969-
int nread = SSL_read(ssl, RSTRING_PTR(str), ilen);
1985+
int nread = ossl_ssl_read_impl(ssl, str, ilen);
19701986
switch (ssl_get_error(ssl, nread)) {
19711987
case SSL_ERROR_NONE:
19721988
rb_str_unlocktmp(str);
@@ -2072,7 +2088,7 @@ ossl_ssl_write_internal(VALUE self, VALUE str, VALUE opts)
20722088
return INT2FIX(0);
20732089

20742090
for (;;) {
2075-
int nwritten = SSL_write(ssl, RSTRING_PTR(tmp), num);
2091+
int nwritten = ossl_ssl_write_impl(ssl, tmp, num);
20762092
switch (ssl_get_error(ssl, nwritten)) {
20772093
case SSL_ERROR_NONE:
20782094
return INT2NUM(nwritten);

0 commit comments

Comments
 (0)