From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on dcvr.yhbt.net X-Spam-Flag: YES X-Spam-Level: ********** X-Spam-ASN: AS200651 185.100.84.0/23 X-Spam-Status: Yes, score=10.4 required=3.0 tests=AWL,BAYES_00, RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_BRBL_LASTEXT,RCVD_IN_MSPIKE_BL, RCVD_IN_MSPIKE_L5,RCVD_IN_PSBL,RCVD_IN_RP_RNBL,RCVD_IN_SBL_CSS,RCVD_IN_XBL, RDNS_NONE,SPF_FAIL,SPF_HELO_FAIL shortcircuit=no autolearn=no autolearn_force=no version=3.4.0 X-Spam-Report: * 3.3 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS * [185.100.84.108 listed in zen.spamhaus.org] * 0.4 RCVD_IN_XBL RBL: Received via a relay in Spamhaus XBL * 1.4 RCVD_IN_BRBL_LASTEXT RBL: No description available. * [185.100.84.108 listed in bb.barracudacentral.org] * 0.0 RCVD_IN_MSPIKE_L5 RBL: Very bad reputation (-5) * [185.100.84.108 listed in bl.mailspike.net] * 2.7 RCVD_IN_PSBL RBL: Received via a relay in PSBL * [185.100.84.108 listed in psbl.surriel.com] * 1.3 RCVD_IN_BL_SPAMCOP_NET RBL: Received via a relay in bl.spamcop.net * [Blocked - see ] * 1.3 RCVD_IN_RP_RNBL RBL: Relay in RNBL, * https://senderscore.org/blacklistlookup/ * [185.100.84.108 listed in bl.score.senderscore.com] * 0.0 SPF_HELO_FAIL SPF: HELO does not match SPF record (fail) * [SPF failed: Please see http://www.openspf.org/Why?s=helo;id=80x24.org;ip=185.100.84.108;r=dcvr.yhbt.net] * 0.0 SPF_FAIL SPF: sender does not match SPF record (fail) * [SPF failed: Please see http://www.openspf.org/Why?s=mfrom;id=e%4080x24.org;ip=185.100.84.108;r=dcvr.yhbt.net] * -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * 0.0 RCVD_IN_MSPIKE_BL Mailspike blacklisted * 0.8 RDNS_NONE Delivered to internal network by a host with no rDNS * 0.9 AWL AWL: Adjusted score from AWL reputation of From: address Received: from 80x24.org (unknown [185.100.84.108]) by dcvr.yhbt.net (Postfix) with ESMTP id 4F0BC1FA7A for ; Mon, 16 May 2016 01:43:51 +0000 (UTC) From: Eric Wong To: yahns-public@yhbt.net Subject: [PATCH 2/7] proxy_pass: hoist out proxy_res_headers method Date: Mon, 16 May 2016 01:43:35 +0000 Message-Id: <20160516014340.8258-3-e@80x24.org> In-Reply-To: <20160516014340.8258-1-e@80x24.org> References: <20160516014340.8258-1-e@80x24.org> List-Id: 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(-) 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 @@ def wait_on_upstream(req_res, alive, wbuf) :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 @@ def proxy_response_start(res, tip, kcar, req_res) 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 ]