diff options
author | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-07-25 00:05:59 +0000 |
---|---|---|
committer | drbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-07-25 00:05:59 +0000 |
commit | ead728ca7d7a42a3c1658d00102732947b514dea (patch) | |
tree | 7a79d8fa836b4922f05c3d118d8866457aed23ec /lib/net | |
parent | b8903f88f43b8dfa6e6bc0194182fffb83c07eb2 (diff) |
* lib/net/http.rb: Added SSL session reuse across connections for a
single instance to speed up connection. [Feature #5341]
* NEWS: ditto
* test/net/http/test_https.rb: Tests for #5341
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36528 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/net')
-rw-r--r-- | lib/net/http.rb | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/net/http.rb b/lib/net/http.rb index 357c41fbd7..0381099a07 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -649,6 +649,7 @@ module Net #:nodoc: @use_ssl = false @ssl_context = nil + @ssl_session = nil @enable_post_connection_check = true @sspi_enabled = false SSL_IVNAMES.each do |ivname| @@ -903,12 +904,14 @@ module Net #:nodoc: @socket.write(buf) HTTPResponse.read_new(@socket).value end + s.session = @ssl_session if @ssl_session # Server Name Indication (SNI) RFC 3546 s.hostname = @address if s.respond_to? :hostname= Timeout.timeout(@open_timeout, Net::OpenTimeout) { s.connect } if @ssl_context.verify_mode != OpenSSL::SSL::VERIFY_NONE s.post_connection_check(@address) end + @ssl_session = s.session rescue => exception D "Conn close because of connect error #{exception}" @socket.close if @socket and not @socket.closed? |