httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jim Jagielski <...@jaguNET.com>
Subject Re: [Patch] Async write completion for the full connection filter stack
Date Mon, 08 Sep 2014 15:52:40 GMT
Gotcha... +1
On Sep 8, 2014, at 11:29 AM, Graham Leggett <minfrin@sharp.fm> wrote:

> On 08 Sep 2014, at 3:50 PM, Jim Jagielski <jim@jaguNET.com> wrote:
> 
>> This is pretty cool... haven't played too much with it, but
>> via inspection I like the implementation.
>> 
>> One question:
>> 
>> ===================================================================
>> --- server/util_filter.c	(revision 1622873)
>> +++ server/util_filter.c	(working copy)
>> @@ -566,6 +566,16 @@
>> {
>>    if (next) {
>>        apr_bucket *e;
>> +        unsigned int activity;
>> +        int empty = APR_BRIGADE_EMPTY(bb);
>> +        apr_status_t status;
>> ...
>> +        while (APR_SUCCESS == status && empty) {
>> +            next = next->next;
>> +            if (next && next->c->activity == activity) {
>> +                status = next->frec->filter_func.out_func(next, bb);
>> +            }
>> +            else {
>> +                break;
>> +            }
>> +        }
>> +
>> +        return status;
>> 
>> Why does while check for empty? Wouldn't it be faster to
>> wrap that while in a 'if (empty)' ? It would safe an
>> addition check on a var that doesn't change on each loop
>> thru the while().
> 
> It would - that was originally an if that became a while when I realised we had to compensate
for multiple filters not calling ap_pass_brigade(), instead of just one.
> 
> The new patch takes out empty completely and instead tracks c->data_in_output_filters,
which could change during the loop.
> 
> Regards,
> Graham
> —
> 


Mime
View raw message