git.net

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Brigade memory lifetime & leaks


On Tue, Jun 5, 2018 at 2:50 PM, Yann Ylavic <ylavic.dev@xxxxxxxxx> wrote:
> On Tue, Jun 5, 2018 at 2:07 PM, Plüm, Rüdiger, Vodafone Group
> <ruediger.pluem@xxxxxxxxxxxx> wrote:
>>
>>  AP_DECLARE(void) ap_process_request_after_handler(request_rec *r)
>>  {
>> @@ -357,7 +367,8 @@
>>       * this bucket is destroyed, the request will be logged and
>>       * its pool will be freed
>>       */
>> -    bb = apr_brigade_create(c->pool, c->bucket_alloc);
>> +    RETRIEVE_BRIGADE_FROM_POOL(bb, "ap_process_request_after_handler_brigade",
>> +                               c->pool, c->bucket_alloc);
>>      b = ap_bucket_eor_create(c->bucket_alloc, r);
>>      APR_BRIGADE_INSERT_HEAD(bb, b);
>>
>> @@ -477,7 +488,8 @@
>>      ap_process_async_request(r);
>>
>>      if (!c->data_in_input_filters) {
>> -        bb = apr_brigade_create(c->pool, c->bucket_alloc);
>> +        RETRIEVE_BRIGADE_FROM_POOL(bb, "ap_process_request_brigade",
>> +                                   c->pool, c->bucket_alloc);
>>          b = apr_bucket_flush_create(c->bucket_alloc);
>>          APR_BRIGADE_INSERT_HEAD(bb, b);
>>          rv = ap_pass_brigade(c->output_filters, bb);
>
> Both probaly need an initial bb = NULL ;)

Hmm no, scatch that!