Project

General

Profile

Bug #11058 » 0002-lib-net-http-response.rb-Net-HTTPResponse-Inflater.patch

ktsj (Kazuki Tsujimoto), 04/11/2015 08:50 AM

View differences:

lib/net/http/response.rb
@socket = socket
# zlib with automatic gzip detection
@inflate = Zlib::Inflate.new(32 + Zlib::MAX_WBITS)
@bytes_read = 0
end
##
# Finishes the inflate stream.
def finish
return if @bytes_read == 0
@inflate.finish
end
......
dest.force_encoding(Encoding::ASCII_8BIT)
end
block = proc do |compressed_chunk|
@bytes_read += compressed_chunk.bytesize
@inflate.inflate(compressed_chunk) do |chunk|
dest << chunk
end
test/net/http/test_httpresponse.rb
assert_equal "\x1F\x8B\b\x00\x00\x00\x00\x00\x00\x03", body
end
def test_read_body_content_encoding_deflate_empty_body
io = dummy_io(<<EOS)
HTTP/1.1 200 OK
Connection: close
Content-Encoding: deflate
Content-Length: 0
EOS
res = Net::HTTPResponse.read_new(io)
res.decode_content = true
body = nil
res.reading_body io, true do
body = res.read_body
end
if Net::HTTP::HAVE_ZLIB
assert_equal nil, res['content-encoding']
assert_equal '', body
else
assert_equal 'deflate', res['content-encoding']
assert_equal '', body
end
end
def test_read_body_content_encoding_deflate_empty_body_no_length
io = dummy_io(<<EOS)
HTTP/1.1 200 OK
Connection: close
Content-Encoding: deflate
EOS
res = Net::HTTPResponse.read_new(io)
res.decode_content = true
body = nil
res.reading_body io, true do
body = res.read_body
end
if Net::HTTP::HAVE_ZLIB
assert_equal nil, res['content-encoding']
assert_equal '', body
else
assert_equal 'deflate', res['content-encoding']
assert_equal '', body
end
end
def test_read_body_string
io = dummy_io(<<EOS)
HTTP/1.1 200 OK
(2-2/2)