From e6c9c4760c735339b2eac0783d1bd9c40a94d2a5 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 3 May 2016 23:10:31 +0000 Subject: proxy_pass: hoist out proxy_res_headers method proxy_response_start is gigantic an hard-to-read, we can more clearly see the lifetimes of some objects, now, and hopefully shorten some of them. --- lib/yahns/proxy_http_response.rb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'lib') diff --git a/lib/yahns/proxy_http_response.rb b/lib/yahns/proxy_http_response.rb index bd274fe..693528f 100644 --- a/lib/yahns/proxy_http_response.rb +++ b/lib/yahns/proxy_http_response.rb @@ -61,11 +61,7 @@ module Yahns::HttpResponse # :nodoc: :wait_readable # self remains in :ignore, wait on upstream end - # start streaming the response once upstream is done sending headers to us. - # returns :wait_readable if we need to read more from req_res - # returns :ignore if we yield control to the client(self) - # returns nil if completely done - def proxy_response_start(res, tip, kcar, req_res) + def proxy_res_headers(res) status, headers = res code = status.to_i msg = Rack::Utils::HTTP_STATUS_CODES[code] @@ -125,7 +121,15 @@ module Yahns::HttpResponse # :nodoc: wbuf = proxy_write(nil, res, alive) break # keep buffering as much as possible end while true + [ alive, wbuf, have_body ] + end + # start streaming the response once upstream is done sending headers to us. + # returns :wait_readable if we need to read more from req_res + # returns :ignore if we yield control to the client(self) + # returns nil if completely done + def proxy_response_start(res, tip, kcar, req_res) + alive, wbuf, have_body = proxy_res_headers(res) rbuf = Thread.current[:yahns_rbuf] tip = tip.empty? ? [] : [ tip ] -- cgit v1.2.3-24-ge0c7