lib/rainbows/event_machine/client.rb in rainbows-4.4.2 vs lib/rainbows/event_machine/client.rb in rainbows-4.4.3

- old
+ new

@@ -26,11 +26,11 @@ end end def quit super - close_connection_after_writing + close_connection_after_writing if nil == @deferred end def app_call input set_comm_inactivity_timeout 0 @env[RACK_INPUT] = input @@ -39,17 +39,21 @@ @env[ASYNC_CLOSE] = EM::DefaultDeferrable.new status, headers, body = catch(:async) { APP.call(@env.merge!(RACK_DEFAULTS)) } - (nil == status || -1 == status) ? @deferred = true : + if (nil == status || -1 == status) + @deferred = true + else ev_write_response(status, headers, body, @hp.next?) + end end def deferred_errback(orig_body) @deferred.errback do orig_body.close if orig_body.respond_to?(:close) + @deferred = nil quit end end def deferred_callback(orig_body, alive) @@ -101,10 +105,11 @@ end end def next! @deferred.close if @deferred.respond_to?(:close) - @hp.keepalive? ? receive_data(@deferred = nil) : quit + @deferred = nil + @hp.keepalive? ? receive_data(nil) : quit end def unbind async_close = @env[ASYNC_CLOSE] and async_close.succeed @deferred.respond_to?(:fail) and @deferred.fail