diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2021-03-19 19:18:25 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2021-10-24 17:24:50 +0900 |
commit | e95ee24867387dfe00fa5d3c4a6f28425a8eff5c (patch) | |
tree | 744ecba3c3485dbdf326f6bb640396374327b93c /ext | |
parent | 5375a55ffc35cf378cd52aa4646028d7cbdbcb6f (diff) | |
download | ruby-openssl-e95ee24867387dfe00fa5d3c4a6f28425a8eff5c.tar.gz |
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')
-rw-r--r-- | ext/openssl/ossl_ssl.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c index 5d6c400c..a0f18d53 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 |