зеркало из https://github.com/github/ruby.git
* ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): Try to shutdown SSL
connection more gracefully. Call SSL_shutdown() max 4 times until it returns 1 (success). Bi-directional SSL close has several states but SSL_shutdown() kicks only 1 transition per call. Max 4 is from mod_ssl.c of Apache httpd that says 'max 2x pending * 2x data = 4'. See #4237. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32219 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
ea9c30bec1
Коммит
369b095015
|
@ -1,3 +1,12 @@
|
|||
Fri Jun 24 15:54:14 2011 Hiroshi Nakamura <nahi@ruby-lang.org>
|
||||
|
||||
* ext/openssl/ossl_ssl.c (ossl_ssl_shutdown): Try to shutdown SSL
|
||||
connection more gracefully. Call SSL_shutdown() max 4 times until it
|
||||
returns 1 (success). Bi-directional SSL close has several states but
|
||||
SSL_shutdown() kicks only 1 transition per call. Max 4 is from
|
||||
mod_ssl.c of Apache httpd that says 'max 2x pending * 2x data = 4'.
|
||||
See #4237.
|
||||
|
||||
Fri Jun 24 07:24:37 2011 Eric Hodel <drbrain@segment7.net>
|
||||
|
||||
* lib/rake/version.rb: Fixed VERSION to work with tool/rbinstall.rb
|
||||
|
|
|
@ -970,8 +970,19 @@ ossl_sslctx_flush_sessions(int argc, VALUE *argv, VALUE self)
|
|||
static void
|
||||
ossl_ssl_shutdown(SSL *ssl)
|
||||
{
|
||||
int i, rc;
|
||||
|
||||
if (ssl) {
|
||||
SSL_shutdown(ssl);
|
||||
/* 4 is from SSL_smart_shutdown() of mod_ssl.c (v2.2.19) */
|
||||
/* It says max 2x pending + 2x data = 4 */
|
||||
for (i = 0; i < 4; ++i) {
|
||||
/*
|
||||
* Ignore the case SSL_shutdown returns -1. Empty handshake_func
|
||||
* must not happen.
|
||||
*/
|
||||
if (rc = SSL_shutdown(ssl))
|
||||
break;
|
||||
}
|
||||
SSL_clear(ssl);
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче