about summary refs log tree commit homepage
path: root/lib/rainbows/event_machine/client.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rainbows/event_machine/client.rb')
-rw-r--r--lib/rainbows/event_machine/client.rb5
1 files changed, 3 insertions, 2 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