diff options
author | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-11-25 03:53:09 +0000 |
---|---|---|
committer | zedshaw <zedshaw@19e92222-5c0b-0410-8929-a290d50e31e9> | 2006-11-25 03:53:09 +0000 |
commit | b96bf4aeeb6e46f0378af41d8e752218c228f3bf (patch) | |
tree | c300eea922a0f81669ae8721fb1e1a1d9d7d2a83 | |
parent | d173a9c253f10f320687779ad233578f197872c7 (diff) | |
download | unicorn-b96bf4aeeb6e46f0378af41d8e752218c228f3bf.tar.gz |
git-svn-id: svn+ssh://rubyforge.org/var/svn/mongrel/trunk@415 19e92222-5c0b-0410-8929-a290d50e31e9
-rw-r--r-- | lib/mongrel.rb | 6 | ||||
-rw-r--r-- | test/test_response.rb | 13 |
2 files changed, 18 insertions, 1 deletions
diff --git a/lib/mongrel.rb b/lib/mongrel.rb index 3bb5447..f30c221 100644 --- a/lib/mongrel.rb +++ b/lib/mongrel.rb @@ -322,12 +322,16 @@ module Mongrel attr_reader :out def initialize(out) + @sent = {} @out = out end # Simply writes "#{key}: #{value}" to an output buffer. def[]=(key,value) - @out.write(Const::HEADER_FORMAT % [key, value]) + if not @sent.has_key?(key) + @sent[key] = true + @out.write(Const::HEADER_FORMAT % [key, value]) + end end end diff --git a/test/test_response.rb b/test/test_response.rb index b68c1ef..c5e1084 100644 --- a/test/test_response.rb +++ b/test/test_response.rb @@ -37,6 +37,19 @@ class ResponseTest < Test::Unit::TestCase assert io.length > 0, "output didn't have data" end + def test_response_duplicate_header_squash + io = StringIO.new + resp = HttpResponse.new(io) + resp.start do |head,out| + head["Content-Length"] = 30 + head["Content-Length"] = 0 + end + + resp.finished + + assert_equal io.length, 95, "too much output" + end + def test_response_404 io = StringIO.new |