path: root/ext
diff options
authorKazuki Yamaguchi <>2021-03-19 19:18:25 +0900
committerKazuki Yamaguchi <>2021-10-25 00:40:44 +0900
commitfa24e7a57e15900c01fa84d7ff5b0905f6bb6092 (patch)
tree602e7a95a5a0c2f55dc399f2fe4eebf672161392 /ext
parentd5aa3fcae68483b0458fbe9f1b64bd0256f9673c (diff)
[ruby/openssl] ssl: use SSL_get_rbio() to check if SSL is started or not
Use SSL_get_rbio() instead of SSL_get_fd(). SSL_get_fd() internally calls SSL_get_rbio() and it's enough for our purpose. In OpenSSL 3.0, SSL_get_fd() leaves an entry in the OpenSSL error queue if BIO has not been set up yet, and we would have to clean it up.
Diffstat (limited to 'ext')
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c
index 5d6c400c2a..a0f18d5388 100644
--- a/ext/openssl/ossl_ssl.c
+++ b/ext/openssl/ossl_ssl.c
@@ -1443,8 +1443,8 @@ ossl_sslctx_flush_sessions(int argc, VALUE *argv, VALUE self)
static inline int
ssl_started(SSL *ssl)
- /* the FD is set in ossl_ssl_setup(), called by #connect or #accept */
- return SSL_get_fd(ssl) >= 0;
+ /* BIO is created through ossl_ssl_setup(), called by #connect or #accept */
+ return SSL_get_rbio(ssl) != NULL;
static void