about summary refs log tree commit homepage
path: root/lib/yahns/http_response.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/yahns/http_response.rb')
-rw-r--r--lib/yahns/http_response.rb5
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