diff --git a/ChangeLog b/ChangeLog index 1d546a921b..e126f1378f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Mon Jun 29 16:01:24 2015 NARUSE, Yui + + * lib/net/http/response.rb (inflater): CONTENT_ENCODING can be upper + case. [ruby-core:69670] [Bug #11285] patched by Andy Chu + Mon Jun 29 14:50:08 2015 Shugo Maeda * eval.c (add_activated_refinement): should not include the original diff --git a/lib/net/http/response.rb b/lib/net/http/response.rb index b0731694ca..219e14e777 100644 --- a/lib/net/http/response.rb +++ b/lib/net/http/response.rb @@ -250,7 +250,7 @@ class Net::HTTPResponse return yield @socket unless @decode_content return yield @socket if self['content-range'] - case self['content-encoding'] + case self['content-encoding'].downcase when 'deflate', 'gzip', 'x-gzip' then self.delete 'content-encoding' diff --git a/test/net/http/test_httpresponse.rb b/test/net/http/test_httpresponse.rb index ba8b45eaca..7d378648b3 100644 --- a/test/net/http/test_httpresponse.rb +++ b/test/net/http/test_httpresponse.rb @@ -82,6 +82,34 @@ Connection: close Content-Encoding: deflate Content-Length: 13 +x\x9C\xCBH\xCD\xC9\xC9\a\x00\x06,\x02\x15 +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 'hello', body + else + assert_equal 'deflate', res['content-encoding'] + assert_equal "x\x9C\xCBH\xCD\xC9\xC9\a\x00\x06,\x02\x15", body + end + end + + def test_read_body_content_encoding_deflate_uppercase + io = dummy_io(<