[#68845] [Ruby trunk - Feature #11056] [PATCH] lib/net/*: use io/wait methods instead of IO.select — normalperson@...
Issue #11056 has been updated by Eric Wong.
3 messages
2015/04/11
[#68945] [Ruby trunk - Feature #11083] [Open] Gemify net-telnet — shibata.hiroshi@...
Issue #11083 has been reported by Hiroshi SHIBATA.
4 messages
2015/04/21
[#68951] Re: [Ruby trunk - Feature #11083] [Open] Gemify net-telnet
— Eric Wong <normalperson@...>
2015/04/21
shibata.hiroshi@gmail.com wrote:
[#69012] [Ruby trunk - Feature #11105] [Open] ES6-like hash literals — shugo@...
Issue #11105 has been reported by Shugo Maeda.
5 messages
2015/04/29
[ruby-core:68846] [Ruby trunk - Bug #11058] [Assigned] [PATCH] Net::HTTPResponse#read_body raises TypeError when receiving empty gzipped response body
From:
kazuki@...
Date:
2015-04-11 09:00:54 UTC
List:
ruby-core #68846
Issue #11058 has been reported by Kazuki Tsujimoto.
----------------------------------------
Bug #11058: [PATCH] Net::HTTPResponse#read_body raises TypeError when receiving empty gzipped response body
https://bugs.ruby-lang.org/issues/11058
* Author: Kazuki Tsujimoto
* Status: Assigned
* Priority: Normal
* Assignee: Yui NARUSE
* ruby -v: ruby 2.3.0dev (2015-04-11 master 50228) [x86_64-linux]
* Backport: 2.0.0: REQUIRED, 2.1: REQUIRED, 2.2: REQUIRED
----------------------------------------
Following code raises TypeError.
~~~ruby
require 'net/http'
def dummy_io(str)
str = str.gsub(/\n/, "\r\n")
Net::BufferedIO.new(StringIO.new(str))
end
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
res.reading_body io, true do
res.read_body
end
~~~
There are two problems.
(1) In Net::HTTPResponse#inflater, `e` may be nil and causes TypeError if `inflate_body_io.finish` failed.
~~~ruby
begin
yield inflate_body_io
ensure
e = $!
begin
inflate_body_io.finish
rescue
raise e
end
end
~~~
(2) Zlib::ZStream#finish raises Zlib::BufError when inflating an empty string, so we should avoid calling #finish in such case.
~~~ruby
require 'zlib'
inflate = Zlib::Inflate.new
inflate.inflate('')
inflate.finish #=> Zlib::BufError: buffer error
~~~
---Files--------------------------------
0001-lib-net-http-response.rb-Net-HTTPResponse-inflater-f.patch (882 Bytes)
0002-lib-net-http-response.rb-Net-HTTPResponse-Inflater.patch (2.78 KB)
--
https://bugs.ruby-lang.org/