diff options
-rw-r--r-- | lib/unicorn/stream_input.rb | 2 | ||||
-rw-r--r-- | test/unit/test_stream_input.rb | 17 |
2 files changed, 18 insertions, 1 deletions
diff --git a/lib/unicorn/stream_input.rb b/lib/unicorn/stream_input.rb index 2c8e40a..ef8997e 100644 --- a/lib/unicorn/stream_input.rb +++ b/lib/unicorn/stream_input.rb @@ -60,7 +60,7 @@ class Unicorn::StreamInput @rbuf.replace('') end end - rv = nil if rv.empty? + rv = nil if rv.empty? && length != 0 end rv end diff --git a/test/unit/test_stream_input.rb b/test/unit/test_stream_input.rb index 20e048d..adf4571 100644 --- a/test/unit/test_stream_input.rb +++ b/test/unit/test_stream_input.rb @@ -129,6 +129,23 @@ class TestStreamInput < Test::Unit::TestCase assert_equal '', buf end + def test_read_zero + r = init_request('hello') + si = Unicorn::StreamInput.new(@rd, r) + assert_equal '', si.read(0) + buf = 'asdf' + rv = si.read(0, buf) + assert_equal rv.object_id, buf.object_id + assert_equal '', buf + assert_equal 'hello', si.read + assert_nil si.read(5) + assert_equal '', si.read(0) + buf = 'hello' + rv = si.read(0, buf) + assert_equal rv.object_id, buf.object_id + assert_equal '', rv + end + def init_request(body, size = nil) @parser = Unicorn::HttpParser.new body = body.to_s.freeze |