summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--lib/webrick/httprequest.rb10
-rw-r--r--test/webrick/test_httprequest.rb9
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 <naruse@ruby-lang.org>
+
+ * 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 <zn@mbf.nifty.com>
* 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 /