diff options
Diffstat (limited to 'lib/yahns/proxy_http_response.rb')
-rw-r--r-- | lib/yahns/proxy_http_response.rb | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/yahns/proxy_http_response.rb b/lib/yahns/proxy_http_response.rb index 9867da2..316c310 100644 --- a/lib/yahns/proxy_http_response.rb +++ b/lib/yahns/proxy_http_response.rb @@ -10,13 +10,14 @@ require_relative 'wbuf_lite' module Yahns::HttpResponse # :nodoc: # switch and yield - def proxy_unbuffer(wbuf) + def proxy_unbuffer(wbuf, nxt = :ignore) @state = wbuf + wbuf.req_res = nil if nxt.nil? && wbuf.respond_to?(:req_res=) tc = Thread.current tc[:yahns_fdmap].remember(self) # Yahns::HttpClient tc[:yahns_queue].queue_mod(self, wbuf.busy == :wait_readable ? Yahns::Queue::QEV_RD : Yahns::Queue::QEV_WR) - :ignore + nxt end def wbuf_alloc(req_res) @@ -175,9 +176,9 @@ module Yahns::HttpResponse # :nodoc: # HTTP/1.0 upstream: wbuf = proxy_write(wbuf, "0\r\n\r\n".freeze, req_res) if alive - return proxy_unbuffer(wbuf) if Yahns::WbufLite === wbuf req_res.shutdown - break + return proxy_unbuffer(wbuf, nil) if Yahns::WbufLite === wbuf + return proxy_busy_mod(wbuf, req_res) when :wait_readable return wait_on_upstream(req_res) end until kcar.body_eof? |