Return-Path: X-Original-To: apmail-httpd-dev-archive@www.apache.org Delivered-To: apmail-httpd-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 1A8DE10890 for ; Thu, 12 Dec 2013 21:57:26 +0000 (UTC) Received: (qmail 13481 invoked by uid 500); 12 Dec 2013 21:57:25 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 13437 invoked by uid 500); 12 Dec 2013 21:57:25 -0000 Mailing-List: contact dev-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@httpd.apache.org Received: (qmail 13427 invoked by uid 99); 12 Dec 2013 21:57:25 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Dec 2013 21:57:25 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of ylavic.dev@gmail.com designates 209.85.223.182 as permitted sender) Received: from [209.85.223.182] (HELO mail-ie0-f182.google.com) (209.85.223.182) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 12 Dec 2013 21:57:20 +0000 Received: by mail-ie0-f182.google.com with SMTP id as1so1651108iec.27 for ; Thu, 12 Dec 2013 13:56:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=m/yy6dNsjUaAy+bazGRZczjoWf9M7BeTUFJo87hBjqo=; b=cs24l2mxMgd+17Q9zy5Mfb/pIDykdovKzK4sTJZhOzY49I0h3fDG7mTMfN4HrngppZ m7AJN9ll/i6OikcfKl+D1H9ApbZUPN9aWllUaUeVcgQfDBL662v8wOxpo1Vw1Ml4Xkxo WfdYXwJWGnrLNv9ywTatWDUWb4gl6llEcb2yUA5YLUvy9AXOduw5A5XOejV21XpbUx7C A+RgdrrwAlSRPJEA1QSvufgUd4H63kDISF39MB8L0ohsLaBgak4Y+D20qZq8pPT89iGg Fm1Sj6FNLXJFozLZFqop05H6T7KVwCvvvDQ9Pmr2952zDsDUGiE7MEPuWNNM+BdPNLJQ PrGA== MIME-Version: 1.0 X-Received: by 10.50.118.41 with SMTP id kj9mr195649igb.9.1386885419614; Thu, 12 Dec 2013 13:56:59 -0800 (PST) Received: by 10.43.60.205 with HTTP; Thu, 12 Dec 2013 13:56:59 -0800 (PST) In-Reply-To: References: Date: Thu, 12 Dec 2013 22:56:59 +0100 Message-ID: Subject: Re: [PATCH] ap_proxy_http_process_response double lifetime transform From: Yann Ylavic To: httpd Content-Type: multipart/mixed; boundary=089e011769a3c7e5a004ed5d6c51 X-Virus-Checked: Checked by ClamAV on apache.org --089e011769a3c7e5a004ed5d6c51 Content-Type: multipart/alternative; boundary=089e011769a3c7e59a04ed5d6c4f --089e011769a3c7e59a04ed5d6c4f Content-Type: text/plain; charset=ISO-8859-1 On Thu, Dec 12, 2013 at 7:14 PM, Yann Ylavic wrote: > On Thu, Dec 12, 2013 at 6:45 PM, Yann Ylavic wrote: > >> Here is a proposal (patch against ap_proxy_http_process_response) to >> address the double lifetime transformation of the buckets from the backend >> when its connection is released early (on EOS, before the last buckets are >> forwarded to the client). >> > > Maybe this version is more safe should bb be (later) created with a > different pool/bucket_alloc than pass_bb : > > [...] > > - for (e = APR_BRIGADE_FIRST(pass_bb); e > - != APR_BRIGADE_SENTINEL(pass_bb); e > - = APR_BUCKET_NEXT(e)) { > - apr_bucket_setaside(e, r->pool); > + rv = ap_save_brigade(NULL, &pass_bb, &bb, > r->pool); > + if (rv != APR_SUCCESS) { > + ap_log_rerror(APLOG_MARK, APLOG_ERR, rv, r, > APLOGNO() > + "Failed to save final output > brigade"); > + return HTTP_INTERNAL_SERVER_ERROR; > > } > This seems not a good idea to return an error here, so this patch is no good either. Let me try a third... Since the original code did not check the return value, I assume the patch does not have to : Index: modules/proxy/mod_proxy_http.c =================================================================== --- modules/proxy/mod_proxy_http.c (revision 1550532) +++ modules/proxy/mod_proxy_http.c (working copy) @@ -1729,12 +1729,8 @@ int ap_proxy_http_process_response(apr_pool_t * p, break; } - /* Switch the allocator lifetime of the buckets */ - proxy_buckets_lifetime_transform(r, bb, pass_bb); - /* found the last brigade? */ - if (APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(pass_bb))) { - + if (APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(bb))) { /* signal that we must leave */ finish = TRUE; @@ -1742,19 +1738,12 @@ int ap_proxy_http_process_response(apr_pool_t * p, * data that lives only as long as the backend connection. * Force a setaside so these transient buckets become heap * buckets that live as long as the request. + * Calling ap_save_brigade with NULL as filter is OK, + * because pass_bb brigade already has been created and + * does not need to get created by ap_save_brigade. */ - for (e = APR_BRIGADE_FIRST(pass_bb); e - != APR_BRIGADE_SENTINEL(pass_bb); e - = APR_BUCKET_NEXT(e)) { - apr_bucket_setaside(e, r->pool); - } + ap_save_brigade(NULL, &pass_bb, &bb, r->pool); - /* finally it is safe to clean up the brigade from the - * connection pool, as we have forced a setaside on all - * buckets. - */ - apr_brigade_cleanup(bb); - /* make sure we release the backend connection as soon * as we know we are done, so that the backend isn't * left waiting for a slow client to eventually @@ -1764,8 +1753,11 @@ int ap_proxy_http_process_response(apr_pool_t * p, backend, r->server); /* Ensure that the backend is not reused */ *backend_ptr = NULL; - } + else { + /* Switch the allocator lifetime of the buckets */ + proxy_buckets_lifetime_transform(r, bb, pass_bb); + } /* try send what we read */ if (ap_pass_brigade(r->output_filters, pass_bb) != APR_SUCCESS [EOS] --089e011769a3c7e59a04ed5d6c4f Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfZXh0cmEiPk9uIFRodSwgRGVjIDEyLCAy MDEzIGF0IDc6MTQgUE0sIFlhbm4gWWxhdmljIDxzcGFuIGRpcj0ibHRyIj4mbHQ7PGEgaHJlZj0i bWFpbHRvOnlsYXZpYy5kZXZAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+eWxhdmljLmRldkBn bWFpbC5jb208L2E+Jmd0Ozwvc3Bhbj4gd3JvdGU6PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3Rl Ij4NCjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4 IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5n LWxlZnQ6MWV4Ij48ZGl2IGRpcj0ibHRyIj48ZGl2IGNsYXNzPSJnbWFpbF9leHRyYSI+PGRpdiBj bGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgY2xhc3M9ImltIj5PbiBUaHUsIERlYyAxMiwgMjAxMyBh dCA2OjQ1IFBNLCBZYW5uIFlsYXZpYyA8c3BhbiBkaXI9Imx0ciI+Jmx0OzxhIGhyZWY9Im1haWx0 bzp5bGF2aWMuZGV2QGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPnlsYXZpYy5kZXZAZ21haWwu Y29tPC9hPiZndDs8L3NwYW4+IHdyb3RlOjxicj4NCg0KPGJsb2NrcXVvdGUgY2xhc3M9ImdtYWls X3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFweCBz b2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgZGlyPSJsdHIiPjxk aXYgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLGhlbHZldGljYSxzYW5zLXNlcmlmIj5IZXJlIGlz IGEgcHJvcG9zYWwgKHBhdGNoIGFnYWluc3QgYXBfcHJveHlfaHR0cF9wcm9jZXNzX3Jlc3BvbnNl KSB0byBhZGRyZXNzIHRoZSBkb3VibGUgbGlmZXRpbWUgdHJhbnNmb3JtYXRpb24gb2YgdGhlIGJ1 Y2tldHMgZnJvbSB0aGUgYmFja2VuZCB3aGVuIGl0cyBjb25uZWN0aW9uIGlzIHJlbGVhc2VkIGVh cmx5IChvbiBFT1MsIGJlZm9yZSB0aGUgbGFzdCBidWNrZXRzIGFyZSBmb3J3YXJkZWQgdG8gdGhl IGNsaWVudCkuPGJyPg0KDQo8L2Rpdj48L2Rpdj48L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj48YnI+ PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWY7ZGlzcGxh eTppbmxpbmUiPk1heWJlIHRoaXMgdmVyc2lvbiBpcyBtb3JlIHNhZmUgc2hvdWxkIGJiIGJlIChs YXRlcikgY3JlYXRlZCB3aXRoIGEgZGlmZmVyZW50IHBvb2wvYnVja2V0X2FsbG9jIHRoYW4gcGFz c19iYiA6PGJyPg0KDQo8YnI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0iaW0iPjxkaXYg Y2xhc3M9ImdtYWlsX2RlZmF1bHQiIHN0eWxlPSJmb250LWZhbWlseTphcmlhbCxoZWx2ZXRpY2Es c2Fucy1zZXJpZjtkaXNwbGF5OmlubGluZSI+Wy4uLl08YnI+PC9kaXY+PGJyPjwvZGl2Pi2goKCg oKCgoKCgoKCgoKCgoKCgoKCgoCBmb3IgKGUgPSBBUFJfQlJJR0FERV9GSVJTVChwYXNzX2JiKTsg ZTxicj4NCjxkaXYgY2xhc3M9ImltIj4toKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAh PSBBUFJfQlJJR0FERV9TRU5USU5FTChwYXNzX2JiKTsgZTxicj4NCi2goKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgID0gQVBSX0JVQ0tFVF9ORVhUKGUpKSB7PGJyPjwvZGl2Pi2goKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKAgYXByX2J1Y2tldF9zZXRhc2lkZShlLCByLSZndDtwb29sKTs8 YnI+K6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHJ2ID0gYXBfc2F2ZV9icmlnYWRlKE5VTEwsICZh bXA7cGFzc19iYiwgJmFtcDtiYiwgci0mZ3Q7cG9vbCk7PGJyPg0KK6CgoKCgoKCgoKCgoKCgoKCg oKCgoKCgIGlmIChydiAhPSBBUFJfU1VDQ0VTUykgezxicj4NCiugoKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKAgYXBfbG9nX3JlcnJvcihBUExPR19NQVJLLCBBUExPR19FUlIsIHJ2LCByLCBBUExP R05PKCk8YnI+K6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgICZxdW90 O0ZhaWxlZCB0byBzYXZlIGZpbmFsIG91dHB1dCBicmlnYWRlJnF1b3Q7KTs8YnI+K6CgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoCByZXR1cm4gSFRUUF9JTlRFUk5BTF9TRVJWRVJfRVJST1I7PGRp diBjbGFzcz0iaW0iPg0KPGJyPg0KoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIH08YnI+PC9kaXY+ PC9kaXY+PC9kaXY+PC9ibG9ja3F1b3RlPjxicj48L2Rpdj48ZGl2IGNsYXNzPSJnbWFpbF9kZWZh dWx0IiBzdHlsZT0iZm9udC1mYW1pbHk6YXJpYWwsaGVsdmV0aWNhLHNhbnMtc2VyaWYiPlRoaXMg c2VlbXMgbm90IGEgZ29vZCBpZGVhIHRvIHJldHVybiBhbiBlcnJvciBoZXJlLCBzbyB0aGlzIHBh dGNoIGlzIG5vIGdvb2QgZWl0aGVyLiBMZXQgbWUgdHJ5IGEgdGhpcmQuLi48YnI+DQo8YnI+PC9k aXY+PGRpdiBjbGFzcz0iZ21haWxfZGVmYXVsdCIgc3R5bGU9ImZvbnQtZmFtaWx5OmFyaWFsLGhl bHZldGljYSxzYW5zLXNlcmlmIj5TaW5jZSB0aGUgb3JpZ2luYWwgY29kZSBkaWQgbm90IGNoZWNr IHRoZSByZXR1cm4gdmFsdWUsIEkgYXNzdW1lIHRoZSBwYXRjaCBkb2VzIG5vdCBoYXZlIHRvIDo8 YnI+PGJyPkluZGV4OiBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV9odHRwLmM8YnI+DQo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PGJyPi0tLSBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV9odHRwLmOgoKAgKHJldmlzaW9uIDE1 NTA1MzIpPGJyPisrKyBtb2R1bGVzL3Byb3h5L21vZF9wcm94eV9odHRwLmOgoKAgKHdvcmtpbmcg Y29weSk8YnI+QEAgLTE3MjksMTIgKzE3MjksOCBAQCBpbnQgYXBfcHJveHlfaHR0cF9wcm9jZXNz X3Jlc3BvbnNlKGFwcl9wb29sX3QgKiBwLDxicj4NCqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBi cmVhazs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKAgfTxicj6gPGJyPi2goKCgoKCgoKCgoKCgoKCg oKCgIC8qIFN3aXRjaCB0aGUgYWxsb2NhdG9yIGxpZmV0aW1lIG9mIHRoZSBidWNrZXRzICovPGJy Pi2goKCgoKCgoKCgoKCgoKCgoKCgIHByb3h5X2J1Y2tldHNfbGlmZXRpbWVfdHJhbnNmb3JtKHIs IGJiLCBwYXNzX2JiKTs8YnI+LTxicj6goKCgoKCgoKCgoKCgoKCgoKCgoCAvKiBmb3VuZCB0aGUg bGFzdCBicmlnYWRlPyAqLzxicj4NCi2goKCgoKCgoKCgoKCgoKCgoKCgIGlmIChBUFJfQlVDS0VU X0lTX0VPUyhBUFJfQlJJR0FERV9MQVNUKHBhc3NfYmIpKSkgezxicj4tPGJyPiugoKCgoKCgoKCg oKCgoKCgoKCgIGlmIChBUFJfQlVDS0VUX0lTX0VPUyhBUFJfQlJJR0FERV9MQVNUKGJiKSkpIHs8 YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIC8qIHNpZ25hbCB0aGF0IHdlIG11c3QgbGVhdmUg Ki88YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIGZpbmlzaCA9IFRSVUU7PGJyPg0KoDxicj5A QCAtMTc0MiwxOSArMTczOCwxMiBAQCBpbnQgYXBfcHJveHlfaHR0cF9wcm9jZXNzX3Jlc3BvbnNl KGFwcl9wb29sX3QgKiBwLDxicj6goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgICogZGF0YSB0aGF0 IGxpdmVzIG9ubHkgYXMgbG9uZyBhcyB0aGUgYmFja2VuZCBjb25uZWN0aW9uLjxicj6goKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgICogRm9yY2UgYSBzZXRhc2lkZSBzbyB0aGVzZSB0cmFuc2llbnQg YnVja2V0cyBiZWNvbWUgaGVhcDxicj4NCqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgKiBidWNr ZXRzIHRoYXQgbGl2ZSBhcyBsb25nIGFzIHRoZSByZXF1ZXN0Ljxicj4roKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgICogQ2FsbGluZyBhcF9zYXZlX2JyaWdhZGUgd2l0aCBOVUxMIGFzIGZpbHRlciBp cyBPSyw8YnI+K6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAqIGJlY2F1c2UgcGFzc19iYiBicmln YWRlIGFscmVhZHkgaGFzIGJlZW4gY3JlYXRlZCBhbmQ8YnI+DQoroKCgoKCgoKCgoKCgoKCgoKCg oKCgoKCgICogZG9lcyBub3QgbmVlZCB0byBnZXQgY3JlYXRlZCBieSBhcF9zYXZlX2JyaWdhZGUu PGJyPqCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgKi88YnI+LaCgoKCgoKCgoKCgoKCgoKCgoKCg oKCgIGZvciAoZSA9IEFQUl9CUklHQURFX0ZJUlNUKHBhc3NfYmIpOyBlPGJyPi2goKCgoKCgoKCg oKCgoKCgoKCgoKCgoKCgoKCgoKCgICE9IEFQUl9CUklHQURFX1NFTlRJTkVMKHBhc3NfYmIpOyBl PGJyPg0KLaCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgPSBBUFJfQlVDS0VUX05FWFQo ZSkpIHs8YnI+LaCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCBhcHJfYnVja2V0X3NldGFzaWRl KGUsIHItJmd0O3Bvb2wpOzxicj4toKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgfTxicj4roKCgoKCg oKCgoKCgoKCgoKCgoKCgoKAgYXBfc2F2ZV9icmlnYWRlKE5VTEwsICZhbXA7cGFzc19iYiwgJmFt cDtiYiwgci0mZ3Q7cG9vbCk7PGJyPg0KoDxicj4toKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgLyog ZmluYWxseSBpdCBpcyBzYWZlIHRvIGNsZWFuIHVwIHRoZSBicmlnYWRlIGZyb20gdGhlPGJyPi2g oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgKiBjb25uZWN0aW9uIHBvb2wsIGFzIHdlIGhhdmUgZm9y Y2VkIGEgc2V0YXNpZGUgb24gYWxsPGJyPi2goKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAgKiBidWNr ZXRzLjxicj4toKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgICovPGJyPg0KLaCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgIGFwcl9icmlnYWRlX2NsZWFudXAoYmIpOzxicj4tPGJyPqCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoCAvKiBtYWtlIHN1cmUgd2UgcmVsZWFzZSB0aGUgYmFja2VuZCBjb25uZWN0aW9u IGFzIHNvb248YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoCAqIGFzIHdlIGtub3cgd2UgYXJl IGRvbmUsIHNvIHRoYXQgdGhlIGJhY2tlbmQgaXNuJiMzOTt0PGJyPg0KoKCgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoCAqIGxlZnQgd2FpdGluZyBmb3IgYSBzbG93IGNsaWVudCB0byBldmVudHVhbGx5 PGJyPkBAIC0xNzY0LDggKzE3NTMsMTEgQEAgaW50IGFwX3Byb3h5X2h0dHBfcHJvY2Vzc19yZXNw b25zZShhcHJfcG9vbF90ICogcCw8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKAg YmFja2VuZCwgci0mZ3Q7c2VydmVyKTs8YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIC8qIEVu c3VyZSB0aGF0IHRoZSBiYWNrZW5kIGlzIG5vdCByZXVzZWQgKi88YnI+DQqgoKCgoKCgoKCgoKCg oKCgoKCgoKCgoKAgKmJhY2tlbmRfcHRyID0gTlVMTDs8YnI+LTxicj6goKCgoKCgoKCgoKCgoKCg oKCgoCB9PGJyPiugoKCgoKCgoKCgoKCgoKCgoKCgIGVsc2Ugezxicj4roKCgoKCgoKCgoKCgoKCg oKCgoKCgoKAgLyogU3dpdGNoIHRoZSBhbGxvY2F0b3IgbGlmZXRpbWUgb2YgdGhlIGJ1Y2tldHMg Ki88YnI+K6CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgIHByb3h5X2J1Y2tldHNfbGlmZXRpbWVfdHJh bnNmb3JtKHIsIGJiLCBwYXNzX2JiKTs8YnI+DQoroKCgoKCgoKCgoKCgoKCgoKCgoCB9PGJyPqA8 YnI+oKCgoKCgoKCgoKCgoKCgoKCgoKAgLyogdHJ5IHNlbmQgd2hhdCB3ZSByZWFkICovPGJyPqCg oKCgoKCgoKCgoKCgoKCgoKCgIGlmIChhcF9wYXNzX2JyaWdhZGUoci0mZ3Q7b3V0cHV0X2ZpbHRl cnMsIHBhc3NfYmIpICE9IEFQUl9TVUNDRVNTPGJyPjwvZGl2PjxkaXYgY2xhc3M9ImdtYWlsX2Rl ZmF1bHQiIHN0eWxlPSJmb250LWZhbWlseTphcmlhbCxoZWx2ZXRpY2Esc2Fucy1zZXJpZiI+DQpb RU9TXTxicj48L2Rpdj48YnI+PC9kaXY+PC9kaXY+DQo= --089e011769a3c7e59a04ed5d6c4f-- --089e011769a3c7e5a004ed5d6c51 Content-Type: text/x-diff; charset=US-ASCII; name="httpd-trunk-mod_proxy_http_response_buckets_transform3.patch" Content-Disposition: attachment; filename="httpd-trunk-mod_proxy_http_response_buckets_transform3.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hp4jowyt1 SW5kZXg6IG1vZHVsZXMvcHJveHkvbW9kX3Byb3h5X2h0dHAuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBtb2R1 bGVzL3Byb3h5L21vZF9wcm94eV9odHRwLmMJKHJldmlzaW9uIDE1NTA1MzIpCisrKyBtb2R1bGVz L3Byb3h5L21vZF9wcm94eV9odHRwLmMJKHdvcmtpbmcgY29weSkKQEAgLTE3MjksMTIgKzE3Mjks OCBAQCBpbnQgYXBfcHJveHlfaHR0cF9wcm9jZXNzX3Jlc3BvbnNlKGFwcl9wb29sX3QgKiBwLAog ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KIAot ICAgICAgICAgICAgICAgICAgICAvKiBTd2l0Y2ggdGhlIGFsbG9jYXRvciBsaWZldGltZSBvZiB0 aGUgYnVja2V0cyAqLwotICAgICAgICAgICAgICAgICAgICBwcm94eV9idWNrZXRzX2xpZmV0aW1l X3RyYW5zZm9ybShyLCBiYiwgcGFzc19iYik7Ci0KICAgICAgICAgICAgICAgICAgICAgLyogZm91 bmQgdGhlIGxhc3QgYnJpZ2FkZT8gKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKEFQUl9CVUNL RVRfSVNfRU9TKEFQUl9CUklHQURFX0xBU1QocGFzc19iYikpKSB7Ci0KKyAgICAgICAgICAgICAg ICAgICAgaWYgKEFQUl9CVUNLRVRfSVNfRU9TKEFQUl9CUklHQURFX0xBU1QoYmIpKSkgewogICAg ICAgICAgICAgICAgICAgICAgICAgLyogc2lnbmFsIHRoYXQgd2UgbXVzdCBsZWF2ZSAqLwogICAg ICAgICAgICAgICAgICAgICAgICAgZmluaXNoID0gVFJVRTsKIApAQCAtMTc0MiwxOSArMTczOCwx MiBAQCBpbnQgYXBfcHJveHlfaHR0cF9wcm9jZXNzX3Jlc3BvbnNlKGFwcl9wb29sX3QgKiBwLAog ICAgICAgICAgICAgICAgICAgICAgICAgICogZGF0YSB0aGF0IGxpdmVzIG9ubHkgYXMgbG9uZyBh cyB0aGUgYmFja2VuZCBjb25uZWN0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICogRm9y Y2UgYSBzZXRhc2lkZSBzbyB0aGVzZSB0cmFuc2llbnQgYnVja2V0cyBiZWNvbWUgaGVhcAogICAg ICAgICAgICAgICAgICAgICAgICAgICogYnVja2V0cyB0aGF0IGxpdmUgYXMgbG9uZyBhcyB0aGUg cmVxdWVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAqIENhbGxpbmcgYXBfc2F2ZV9icmln YWRlIHdpdGggTlVMTCBhcyBmaWx0ZXIgaXMgT0ssCisgICAgICAgICAgICAgICAgICAgICAgICAg KiBiZWNhdXNlIHBhc3NfYmIgYnJpZ2FkZSBhbHJlYWR5IGhhcyBiZWVuIGNyZWF0ZWQgYW5kCisg ICAgICAgICAgICAgICAgICAgICAgICAgKiBkb2VzIG5vdCBuZWVkIHRvIGdldCBjcmVhdGVkIGJ5 IGFwX3NhdmVfYnJpZ2FkZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICAg ICAgICAgICAgICAgICAgZm9yIChlID0gQVBSX0JSSUdBREVfRklSU1QocGFzc19iYik7IGUKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gQVBSX0JSSUdBREVfU0VOVElORUwocGFz c19iYik7IGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBBUFJfQlVDS0VUX05F WFQoZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHJfYnVja2V0X3NldGFzaWRl KGUsIHItPnBvb2wpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg ICAgICAgICAgYXBfc2F2ZV9icmlnYWRlKE5VTEwsICZwYXNzX2JiLCAmYmIsIHItPnBvb2wpOwog Ci0gICAgICAgICAgICAgICAgICAgICAgICAvKiBmaW5hbGx5IGl0IGlzIHNhZmUgdG8gY2xlYW4g dXAgdGhlIGJyaWdhZGUgZnJvbSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIGNvbm5l Y3Rpb24gcG9vbCwgYXMgd2UgaGF2ZSBmb3JjZWQgYSBzZXRhc2lkZSBvbiBhbGwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAqIGJ1Y2tldHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgKi8K LSAgICAgICAgICAgICAgICAgICAgICAgIGFwcl9icmlnYWRlX2NsZWFudXAoYmIpOwotCiAgICAg ICAgICAgICAgICAgICAgICAgICAvKiBtYWtlIHN1cmUgd2UgcmVsZWFzZSB0aGUgYmFja2VuZCBj b25uZWN0aW9uIGFzIHNvb24KICAgICAgICAgICAgICAgICAgICAgICAgICAqIGFzIHdlIGtub3cg d2UgYXJlIGRvbmUsIHNvIHRoYXQgdGhlIGJhY2tlbmQgaXNuJ3QKICAgICAgICAgICAgICAgICAg ICAgICAgICAqIGxlZnQgd2FpdGluZyBmb3IgYSBzbG93IGNsaWVudCB0byBldmVudHVhbGx5CkBA IC0xNzY0LDggKzE3NTMsMTEgQEAgaW50IGFwX3Byb3h5X2h0dHBfcHJvY2Vzc19yZXNwb25zZShh cHJfcG9vbF90ICogcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2VuZCwg ci0+c2VydmVyKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVuc3VyZSB0aGF0IHRoZSBi YWNrZW5kIGlzIG5vdCByZXVzZWQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICpiYWNrZW5k X3B0ciA9IE5VTEw7Ci0KICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFN3aXRjaCB0aGUgYWxsb2NhdG9y IGxpZmV0aW1lIG9mIHRoZSBidWNrZXRzICovCisgICAgICAgICAgICAgICAgICAgICAgICBwcm94 eV9idWNrZXRzX2xpZmV0aW1lX3RyYW5zZm9ybShyLCBiYiwgcGFzc19iYik7CisgICAgICAgICAg ICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgICAgICAvKiB0cnkgc2VuZCB3aGF0IHdlIHJl YWQgKi8KICAgICAgICAgICAgICAgICAgICAgaWYgKGFwX3Bhc3NfYnJpZ2FkZShyLT5vdXRwdXRf ZmlsdGVycywgcGFzc19iYikgIT0gQVBSX1NVQ0NFU1MK --089e011769a3c7e5a004ed5d6c51--