diff options
-rw-r--r-- | lib/net/http.rb | 1 | ||||
-rw-r--r-- | test/net/http/test_http.rb | 24 |
2 files changed, 25 insertions, 0 deletions
diff --git a/lib/net/http.rb b/lib/net/http.rb index aaf3e3104d..552f818e5d 100644 --- a/lib/net/http.rb +++ b/lib/net/http.rb @@ -1055,6 +1055,7 @@ module Net #:nodoc: write_timeout: @write_timeout, continue_timeout: @continue_timeout, debug_output: @debug_output) + @last_communicated = nil on_connect rescue => exception if s diff --git a/test/net/http/test_http.rb b/test/net/http/test_http.rb index c859021956..b5156078a4 100644 --- a/test/net/http/test_http.rb +++ b/test/net/http/test_http.rb @@ -1168,6 +1168,30 @@ class TestNetHTTPKeepAlive < Test::Unit::TestCase } end + def test_keep_alive_reset_on_new_connection + # Using WEBrick's debug log output on accepting connection: + # + # "[2021-04-29 20:36:46] DEBUG accept: 127.0.0.1:50674\n" + @log_tester = nil + @server.logger.level = WEBrick::BasicLog::DEBUG + + start {|http| + res = http.get('/') + http.keep_alive_timeout = 1 + assert_kind_of Net::HTTPResponse, res + assert_kind_of String, res.body + http.finish + assert_equal 1, @log.grep(/accept/i).size + + sleep 1.5 + http.start + res = http.get('/') + assert_kind_of Net::HTTPResponse, res + assert_kind_of String, res.body + assert_equal 2, @log.grep(/accept/i).size + } + end + class MockSocket attr_reader :count def initialize(success_after: nil) |