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 78E3118916 for ; Wed, 7 Oct 2015 18:45:08 +0000 (UTC) Received: (qmail 75526 invoked by uid 500); 7 Oct 2015 18:45:07 -0000 Delivered-To: apmail-httpd-dev-archive@httpd.apache.org Received: (qmail 75460 invoked by uid 500); 7 Oct 2015 18:45:07 -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 75451 invoked by uid 99); 7 Oct 2015 18:45:07 -0000 Received: from mail-relay.apache.org (HELO mail-relay.apache.org) (140.211.11.15) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 07 Oct 2015 18:45:07 +0000 Received: from gauss.localdomain (v4-861345e7.pool.vitroconnect.de [134.19.69.231]) by mail-relay.apache.org (ASF Mail Server at mail-relay.apache.org) with ESMTPSA id 3B7C41A0163 for ; Wed, 7 Oct 2015 18:45:06 +0000 (UTC) Received: from [IPv6:::1] (localhost [IPv6:::1]) by gauss.localdomain (Postfix) with ESMTP id 9672C431 for ; Wed, 7 Oct 2015 20:45:07 +0200 (CEST) Subject: Re: svn commit: r1707159 - /httpd/httpd/trunk/server/eor_bucket.c To: dev@httpd.apache.org References: <20151006222324.D6C3B3A0141@svn01-us-west.apache.org> From: Ruediger Pluem Message-ID: <56156833.3080806@apache.org> Date: Wed, 7 Oct 2015 20:45:07 +0200 User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:41.0) Gecko/20100101 Firefox/41.0 SeaMonkey/2.38 MIME-Version: 1.0 In-Reply-To: <20151006222324.D6C3B3A0141@svn01-us-west.apache.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 10/07/2015 12:23 AM, ylavic@apache.org wrote: > Author: ylavic > Date: Tue Oct 6 22:23:24 2015 > New Revision: 1707159 > > URL: http://svn.apache.org/viewvc?rev=1707159&view=rev > Log: > eor_bucket: follow up to r1707084: use an inner shared bucket. > > Modified: > httpd/httpd/trunk/server/eor_bucket.c > > Modified: httpd/httpd/trunk/server/eor_bucket.c > URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/eor_bucket.c?rev=1707159&r1=1707158&r2=1707159&view=diff > ============================================================================== > --- httpd/httpd/trunk/server/eor_bucket.c (original) > +++ httpd/httpd/trunk/server/eor_bucket.c Tue Oct 6 22:23:24 2015 > @@ -21,15 +21,15 @@ > > static apr_status_t eor_bucket_cleanup(void *data) > { > - apr_bucket *b = (apr_bucket *)data; > - request_rec *r = (request_rec *)b->data; > + request_rec **rp = data; > > - if (r != NULL) { > + if (*rp) { > + request_rec *r = *rp; > /* > * If eor_bucket_destroy is called after us, this prevents > * eor_bucket_destroy from trying to destroy the pool again. > */ > - b->data = NULL; > + *rp = NULL; > /* Update child status and log the transaction */ > ap_update_child_status(r->connection->sbh, SERVER_BUSY_LOG, r); > ap_run_log_transaction(r); > @@ -50,11 +50,13 @@ static apr_status_t eor_bucket_read(apr_ > > AP_DECLARE(apr_bucket *) ap_bucket_eor_make(apr_bucket *b, request_rec *r) > { > - b->length = 0; > - b->start = 0; > - b->data = r; > - b->type = &ap_bucket_type_eor; > + apr_bucket *h; IMHO this should be apr_bucket_refcount *h; > > + h = apr_bucket_alloc(sizeof(*h), b->list); > + h->data = r; > + > + b = apr_bucket_shared_make(b, h, 0, 0); > + b->type = &ap_bucket_type_eor; > return b; > } > > @@ -66,7 +68,9 @@ AP_DECLARE(apr_bucket *) ap_bucket_eor_c > APR_BUCKET_INIT(b); > b->free = apr_bucket_free; > b->list = list; > + b = ap_bucket_eor_make(b, r); > if (r) { > + apr_bucket *h = b->data; > /* > * Register a cleanup for the request pool as the eor bucket could > * have been allocated from a different pool then the request pool > @@ -76,38 +80,31 @@ AP_DECLARE(apr_bucket *) ap_bucket_eor_c > * We need to use a pre-cleanup here because a module may create a > * sub-pool which is still needed during the log_transaction hook. > */ > - apr_pool_pre_cleanup_register(r->pool, (void *)b, eor_bucket_cleanup); > + apr_pool_pre_cleanup_register(r->pool, &h->data, eor_bucket_cleanup); > } > - return ap_bucket_eor_make(b, r); > + return b; > } > > static void eor_bucket_destroy(void *data) > { > - request_rec *r = (request_rec *)data; > + apr_bucket *h = data; IMHO this should be apr_bucket_refcount *h; Regards RĂ¼diger