about summary refs log tree commit homepage
diff options
context:
space:
mode:
-rw-r--r--lib/rainbows/event_machine/client.rb5
-rw-r--r--lib/rainbows/event_machine/response_pipe.rb5
2 files changed, 5 insertions, 5 deletions
diff --git a/lib/rainbows/event_machine/client.rb b/lib/rainbows/event_machine/client.rb
index 0b46b42..6863be0 100644
--- a/lib/rainbows/event_machine/client.rb
+++ b/lib/rainbows/event_machine/client.rb
@@ -91,11 +91,11 @@ class Rainbows::EventMachine::Client < EM::Connection
         end
         return
       elsif st.socket? || st.pipe?
-        @body = io = body_to_io(body)
+        io = body_to_io(@body = body)
         chunk = stream_response_headers(status, headers) if headers
         m = chunk ? Rainbows::EventMachine::ResponseChunkPipe :
                     Rainbows::EventMachine::ResponsePipe
-        return EM.watch(io, m, self, alive, body).notify_readable = true
+        return EM.watch(io, m, self).notify_readable = true
       end
       # char or block device... WTF? fall through to body.each
     end
@@ -106,6 +106,7 @@ class Rainbows::EventMachine::Client < EM::Connection
   end
 
   def next!
+    @body.close if @body.respond_to?(:close)
     @hp.keepalive? ? receive_data(@body = nil) : quit
   end
 
diff --git a/lib/rainbows/event_machine/response_pipe.rb b/lib/rainbows/event_machine/response_pipe.rb
index 3da2417..3b584c7 100644
--- a/lib/rainbows/event_machine/response_pipe.rb
+++ b/lib/rainbows/event_machine/response_pipe.rb
@@ -5,8 +5,8 @@ module Rainbows::EventMachine::ResponsePipe
   # so a single buffer for all clients will work safely
   BUF = ''
 
-  def initialize(client, alive, body)
-    @client, @alive, @body = client, alive, body
+  def initialize(client)
+    @client = client
   end
 
   def notify_readable
@@ -22,7 +22,6 @@ module Rainbows::EventMachine::ResponsePipe
   end
 
   def unbind
-    @body.close if @body.respond_to?(:close)
     @client.next!
     @io.close unless @io.closed?
   end