ruby-changes:36867
From: naruse <ko1@a...>
Date: Wed, 24 Dec 2014 03:10:39 +0900 (JST)
Subject: [ruby-changes:36867] naruse:r48948 (trunk): * lib/net/http/response.rb (Net::HTTPResponse): require one or more
naruse 2014-12-24 03:10:19 +0900 (Wed, 24 Dec 2014) New Revision: 48948 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=48948 Log: * lib/net/http/response.rb (Net::HTTPResponse): require one or more spaces [Bug #10591]. by leriksen <leif.eriksen.au@g...> https://github.com/ruby/ruby/pull/782 fix GH-782 NOTE: graph.facebook.com returns without SP Reason-Phrase. Modified files: trunk/ChangeLog trunk/lib/net/http/response.rb trunk/test/net/http/test_httpresponse.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 48947) +++ ChangeLog (revision 48948) @@ -1,3 +1,11 @@ https://github.com/ruby/ruby/blob/trunk/ChangeLog#L1 +Wed Dec 24 02:44:06 2014 NARUSE, Yui <naruse@r...> + + * lib/net/http/response.rb (Net::HTTPResponse): require one or more + spaces [Bug #10591]. + by leriksen <leif.eriksen.au@g...> + https://github.com/ruby/ruby/pull/782 fix GH-782 + NOTE: graph.facebook.com returns without SP Reason-Phrase. + Wed Dec 24 02:12:22 2014 Nobuyoshi Nakada <nobu@r...> * tool/make-snapshot (package): VCS#branch_list expects glob a Index: lib/net/http/response.rb =================================================================== --- lib/net/http/response.rb (revision 48947) +++ lib/net/http/response.rb (revision 48948) @@ -37,7 +37,7 @@ class Net::HTTPResponse https://github.com/ruby/ruby/blob/trunk/lib/net/http/response.rb#L37 def read_status_line(sock) str = sock.readline - m = /\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)\s*(.*)\z/in.match(str) or + m = /\AHTTP(?:\/(\d+\.\d+))?\s+(\d\d\d)(?:\s+(.*))?\z/in.match(str) or raise Net::HTTPBadResponse, "wrong status line: #{str.dump}" m.captures end Index: test/net/http/test_httpresponse.rb =================================================================== --- test/net/http/test_httpresponse.rb (revision 48947) +++ test/net/http/test_httpresponse.rb (revision 48948) @@ -244,6 +244,65 @@ EOS https://github.com/ruby/ruby/blob/trunk/test/net/http/test_httpresponse.rb#L244 refute_same uri, response.uri end + def test_ensure_zero_space_does_not_regress + io = dummy_io(<<EOS) +HTTP/1.1 200OK +Content-Length: 5 +Connection: close + +hello +EOS + + assert_raises Net::HTTPBadResponse do + Net::HTTPResponse.read_new(io) + end + end + + def test_allow_trailing_space_after_status + io = dummy_io(<<EOS) +HTTP/1.1 200\s +Content-Length: 5 +Connection: close + +hello +EOS + + res = Net::HTTPResponse.read_new(io) + assert_equal('1.1', res.http_version) + assert_equal('200', res.code) + assert_equal('', res.message) + end + + def test_normal_status_line + io = dummy_io(<<EOS) +HTTP/1.1 200 OK +Content-Length: 5 +Connection: close + +hello +EOS + + res = Net::HTTPResponse.read_new(io) + assert_equal('1.1', res.http_version) + assert_equal('200', res.code) + assert_equal('OK', res.message) + end + + def test_allow_empty_reason_code + io = dummy_io(<<EOS) +HTTP/1.1 200 +Content-Length: 5 +Connection: close + +hello +EOS + + res = Net::HTTPResponse.read_new(io) + assert_equal('1.1', res.http_version) + assert_equal('200', res.code) + assert_equal(nil, res.message) + end + private def dummy_io(str) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/