diff options
author | Eric Wong <e@80x24.org> | 2015-03-13 02:20:11 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2015-03-13 02:27:15 +0000 |
commit | bec46d9d2675771a183c934114fe86700e09c39e (patch) | |
tree | 46eae6f6651ab8ae9acf912c70ad6350f23d711d /test/test_rack_hijack.rb | |
parent | 81dcac1034c4b3f0338bf42fa777a2806170530b (diff) | |
download | yahns-bec46d9d2675771a183c934114fe86700e09c39e.tar.gz |
We probably do not want env["rack.input"] to become unusable upon hijacking. Only drop the internal reference to it so it can eventually become garbage-collected, but there's no point in making env["rack.input"] unreadable.
Diffstat (limited to 'test/test_rack_hijack.rb')
-rw-r--r-- | test/test_rack_hijack.rb | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/test/test_rack_hijack.rb b/test/test_rack_hijack.rb index 03c3051..2cc6b2d 100644 --- a/test/test_rack_hijack.rb +++ b/test/test_rack_hijack.rb @@ -20,6 +20,12 @@ class TestRackHijack < Testcase HIJACK_APP = lambda { |env| case env["PATH_INFO"] + when "/hijack_input" + io = env["rack.hijack"].call + env["rack.hijack_io"].write("HTTP/1.0 201 OK\r\n\r\n") + io.write("rack.input contents: #{env['rack.input'].read}") + io.close + return [ 500, {}, DieIfUsed.new ] when "/hijack_req" io = env["rack.hijack"].call if io.respond_to?(:read_nonblock) && @@ -64,6 +70,14 @@ class TestRackHijack < Testcase assert_equal 200, res.code.to_i assert_equal "zzz", res["X-Test"] assert_equal "1.1", res.http_version + + res = Net::HTTP.start(host, port) do |h| + hdr = { "Content-Type" => 'application/octet-stream' } + h.put("/hijack_input", "BLAH", hdr) + end + assert_equal "rack.input contents: BLAH", res.body + assert_equal 201, res.code.to_i + assert_equal "1.0", res.http_version ensure quit_wait(pid) end |