diff options
Diffstat (limited to 'lib/yahns/http_response.rb')
-rw-r--r-- | lib/yahns/http_response.rb | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/yahns/http_response.rb b/lib/yahns/http_response.rb index 1be28bc..fabd4b7 100644 --- a/lib/yahns/http_response.rb +++ b/lib/yahns/http_response.rb @@ -69,7 +69,9 @@ module Yahns::HttpResponse # :nodoc: end wbuf = Yahns::Wbuf.new(body, alive, self.class.output_buffer_tmpdir, ret) rv = wbuf.wbuf_write(self, header) - body.each { |chunk| rv = wbuf.wbuf_write(self, chunk) } if body + if body && ! alive.respond_to?(:call) # skip body.each if hijacked + body.each { |chunk| rv = wbuf.wbuf_write(self, chunk) } + end wbuf_maybe(wbuf, rv) end @@ -155,7 +157,6 @@ module Yahns::HttpResponse # :nodoc: buf << kv_str(key, value) when "rack.hijack" hijack = value - body = nil # ensure we do not close body else buf << kv_str(key, value) end |