Bug #5737 » 204_304_keep_alive.patch
| lib/webrick/httpresponse.rb | ||
|---|---|---|
|
if @header['connection'] == "close"
|
||
|
@keep_alive = false
|
||
|
elsif keep_alive?
|
||
|
if chunked? || @header['content-length']
|
||
|
if chunked? || @header['content-length'] || @status == 304 || @status == 204
|
||
|
@header['connection'] = "Keep-Alive"
|
||
|
else
|
||
|
msg = "Could not determine content-length of response body. Set content-length of the response or set Response#chunked = true"
|
||
| test/webrick/test_httpresponse.rb | ||
|---|---|---|
|
require "webrick"
|
||
|
require "minitest/autorun"
|
||
|
module WEBrick
|
||
|
class TestHTTPResponse < MiniTest::Unit::TestCase
|
||
|
class FakeLogger
|
||
|
attr_reader :messages
|
||
|
def initialize
|
||
|
@messages = []
|
||
|
end
|
||
|
def warn msg
|
||
|
@messages << msg
|
||
|
end
|
||
|
end
|
||
|
def test_304_does_not_log_warning
|
||
|
logger = FakeLogger.new
|
||
|
config = Config::HTTP
|
||
|
config[:Logger] = logger
|
||
|
res = HTTPResponse.new config
|
||
|
res.status = 304
|
||
|
res.keep_alive = true
|
||
|
res.setup_header
|
||
|
assert_equal 0, logger.messages.length
|
||
|
end
|
||
|
def test_204_does_not_log_warning
|
||
|
logger = FakeLogger.new
|
||
|
config = Config::HTTP
|
||
|
config[:Logger] = logger
|
||
|
res = HTTPResponse.new config
|
||
|
res.status = 204
|
||
|
res.keep_alive = true
|
||
|
res.setup_header
|
||
|
assert_equal 0, logger.messages.length
|
||
|
end
|
||
|
end
|
||
|
end
|
||