зеркало из https://github.com/github/ruby.git
* lib/net/http/response.rb (Net::HTTPResponse::Inflater#finish):
fix a bug that empty gzipped response body causes Zlib::BufError. [ruby-core:68846] [Bug #11058] * test/net/http/test_httpresponse.rb: tests for the above. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51465 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
d7bb66df26
Коммит
9cf11b70ca
|
@ -1,3 +1,11 @@
|
|||
Sat Aug 1 17:13:15 2015 Kazuki Tsujimoto <kazuki@callcc.net>
|
||||
|
||||
* lib/net/http/response.rb (Net::HTTPResponse::Inflater#finish):
|
||||
fix a bug that empty gzipped response body causes Zlib::BufError.
|
||||
[ruby-core:68846] [Bug #11058]
|
||||
|
||||
* test/net/http/test_httpresponse.rb: tests for the above.
|
||||
|
||||
Sat Aug 1 17:05:18 2015 Kazuki Tsujimoto <kazuki@callcc.net>
|
||||
|
||||
* lib/net/http/response.rb (Net::HTTPResponse#inflater):
|
||||
|
|
|
@ -359,6 +359,7 @@ class Net::HTTPResponse
|
|||
# Finishes the inflate stream.
|
||||
|
||||
def finish
|
||||
return if @inflate.total_in == 0
|
||||
@inflate.finish
|
||||
end
|
||||
|
||||
|
|
|
@ -237,6 +237,59 @@ EOS
|
|||
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
|
||||
|
|
Загрузка…
Ссылка в новой задаче