From 76731871e70398afbd044e16e9cf4151b471841b Mon Sep 17 00:00:00 2001 From: tenderlove Date: Wed, 5 Jan 2011 04:57:27 +0000 Subject: [PATCH] * SSL_shutdown should be called until the return value is non-zero: http://www.openssl.org/docs/ssl/SSL_shutdown.html git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30451 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ ext/openssl/ossl_ssl.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 592b85a853..418012c931 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Jan 5 13:56:03 2011 Aaron Patterson + + * SSL_shutdown should be called until the return value is non-zero: + http://www.openssl.org/docs/ssl/SSL_shutdown.html + Wed Jan 5 12:10:08 2011 Aaron Patterson * Use _WIN32 rather than checking for windows.h. Thanks Jon Forums! diff --git a/ext/openssl/ossl_ssl.c b/ext/openssl/ossl_ssl.c index 99a4fe3e97..c6f7d17231 100644 --- a/ext/openssl/ossl_ssl.c +++ b/ext/openssl/ossl_ssl.c @@ -960,8 +960,11 @@ ossl_sslctx_flush_sessions(int argc, VALUE *argv, VALUE self) static void ossl_ssl_shutdown(SSL *ssl) { + int dead; if (ssl) { - SSL_shutdown(ssl); + do { + dead = SSL_shutdown(ssl); + } while(!dead); SSL_clear(ssl); } }