From 2dfc9e162615a326eb639bd51ce0ae9ec3d439e4 Mon Sep 17 00:00:00 2001 From: naruse Date: Thu, 21 Jul 2011 08:27:08 +0000 Subject: * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#each): Allow HTTP/0.9 request which doesn't has any header or body. patched by Felix Jodoin. [ruby-core:38040] [Bug #5022] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32593 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 6 ++++++ lib/webrick/httprequest.rb | 10 ++++++---- test/webrick/test_httprequest.rb | 9 +++++++++ 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 19ae34a2e7..de3583f59e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Thu Jul 21 17:14:21 2011 NARUSE, Yui + + * lib/webrick/httprequest.rb (WEBrick::HTTPRequest#each): + Allow HTTP/0.9 request which doesn't has any header or body. + patched by Felix Jodoin. [ruby-core:38040] [Bug #5022] + Wed Jul 20 23:02:18 2011 Kazuhiro NISHIYAMA * io.c (rb_update_max_fd): remove parentheses. they are not in diff --git a/lib/webrick/httprequest.rb b/lib/webrick/httprequest.rb index 1e8789d2d6..050b5ed45b 100644 --- a/lib/webrick/httprequest.rb +++ b/lib/webrick/httprequest.rb @@ -179,10 +179,12 @@ module WEBrick # Iterates over the request headers def each - @header.each{|k, v| - value = @header[k] - yield(k, value.empty? ? nil : value.join(", ")) - } + if @header + @header.each{|k, v| + value = @header[k] + yield(k, value.empty? ? nil : value.join(", ")) + } + end end ## diff --git a/test/webrick/test_httprequest.rb b/test/webrick/test_httprequest.rb index d8467d4b4e..0ce6b4f40f 100644 --- a/test/webrick/test_httprequest.rb +++ b/test/webrick/test_httprequest.rb @@ -3,6 +3,15 @@ require "stringio" require "test/unit" class TestWEBrickHTTPRequest < Test::Unit::TestCase + def test_simple_request + msg = <<-_end_of_message_ +GET / + _end_of_message_ + req = WEBrick::HTTPRequest.new(WEBrick::Config::HTTP) + req.parse(StringIO.new(msg)) + assert(req.meta_vars) # fails if @header was not initialized and iteration is attempted on the nil reference + end + def test_parse_09 msg = <<-_end_of_message_ GET / -- cgit v1.2.3