From 8c1e3da65d7a709c6578652fa57e5ca0e7a9a459 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 22 Jun 2011 07:40:03 +0000 Subject: epoll/client: properly close on all pipe responses Some pipe responses can trigger the on_deferred_write_complete method without ever re-running the event loop. This appears to be the result of the occasional t0050 failures. --- lib/rainbows/epoll/client.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/rainbows/epoll/client.rb b/lib/rainbows/epoll/client.rb index d3a06eb..891e959 100644 --- a/lib/rainbows/epoll/client.rb +++ b/lib/rainbows/epoll/client.rb @@ -96,12 +96,12 @@ module Rainbows::Epoll::Client end def ev_write_response(status, headers, body, alive) + @state = alive ? :headers : :close if body.respond_to?(:to_path) write_response_path(status, headers, body, alive) else write_response(status, headers, body, alive) end - @state = alive ? :headers : :close on_read(Z) if alive && 0 == @wr_queue.size && 0 != @buf.size end -- cgit v1.2.3-24-ge0c7