summary refs log tree commit
path: root/lib/rack/lint.rb
diff options
context:
space:
mode:
authorEric Wong <normalperson@yhbt.net>2013-01-22 11:29:59 +0000
committerEric Wong <normalperson@yhbt.net>2013-01-22 11:36:04 +0000
commitb20b0023d6f4676a6f0645a522656b384446562a (patch)
treedb41ad12334f9484220fce2b3d62b1ae0a78dbc0 /lib/rack/lint.rb
parent0cba6a4d5aeb1ac8768b6ca36320731487fb596b (diff)
downloadrack-b20b0023d6f4676a6f0645a522656b384446562a.tar.gz
lint: avoid TypeError on non-Hash-like response headers lint-headerhash
According to SPEC (and check_headers), Response headers need only
respond to #each.  Thus, check_hijack_response should rely on
Rack::Utils::HeaderHash if it wishes to access the headers in a
hash-like fashion.
Diffstat (limited to 'lib/rack/lint.rb')
-rw-r--r--lib/rack/lint.rb5
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/rack/lint.rb b/lib/rack/lint.rb
index 338f7f09..1bc2127f 100644
--- a/lib/rack/lint.rb
+++ b/lib/rack/lint.rb
@@ -500,6 +500,11 @@ module Rack
     ## It is also possible to hijack a response after the status and headers
     ## have been sent.
     def check_hijack_response(headers, env)
+
+      # this check uses headers like a hash, but the spec only requires
+      # headers respond to #each
+      headers = Rack::Utils::HeaderHash.new(headers)
+
       ## In order to do this, an application may set the special header
       ## <tt>rack.hijack</tt> to an object that responds to <tt>call</tt>
       ## accepting an argument that conforms to the <tt>rack.hijack_io</tt>