httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Joe Schaefer <joe_schae...@yahoo.com>
Subject Re: svn commit: r1161661 - /httpd/httpd/trunk/modules/http/byterange_filter.c
Date Thu, 25 Aug 2011 21:02:44 GMT
+1, also has the advantage of not being a quadratic
allocator the way Jim's usage of apr_pstrcat is.





>________________________________
>From: Stefan Fritsch <sf@sfritsch.de>
>To: dev@httpd.apache.org
>Sent: Thursday, August 25, 2011 4:56 PM
>Subject: Re: svn commit: r1161661 - /httpd/httpd/trunk/modules/http/byterange_filter.c
>
>On Thu, 25 Aug 2011, jim@apache.org wrote:
>
>> Author: jim
>> Date: Thu Aug 25 17:38:19 2011
>> New Revision: 1161661
>> 
>> URL: http://svn.apache.org/viewvc?rev=1161661&view=rev
>> Log:
>> Merge in byteranges
>> 
>> Modified:
>>    httpd/httpd/trunk/modules/http/byterange_filter.c
>> 
>> Modified: httpd/httpd/trunk/modules/http/byterange_filter.c
>> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/http/byterange_filter.c?rev=1161661&r1=1161660&r2=1161661&view=diff
>> ==============================================================================
>> --- httpd/httpd/trunk/modules/http/byterange_filter.c (original)
>> +++ httpd/httpd/trunk/modules/http/byterange_filter.c Thu Aug 25 17:38:19 2011
>
>
>> +        if (in_merge) {
>> +            continue;
>> +        } else {
>> +            char *nr = apr_psprintf(r->pool, "%" APR_OFF_T_FMT "-%" APR_OFF_T_FMT,
>> +                                    ostart, oend);
>> +            merged = apr_pstrcat(r->pool, merged, (num_ranges++ ? "," :
""), nr, NULL);
>> +        }
>>     }
>> 
>> +    if (in_merge) {
>> +        char *nr = apr_psprintf(r->pool, "%" APR_OFF_T_FMT "-%" APR_OFF_T_FMT,
>> +                                ostart, oend);
>> +        merged = apr_pstrcat(r->pool, merged, (num_ranges++ ? "," : ""),
nr, NULL);
>> +    }
>
>Is it really a good idea to first parse the range string (involving lots of copying with
ap_getword), then format it back into a string just to have it parsed by parse_byterange again?
I would much prefer to have it parsed only once into an array of values and then do the merging
in that array. This is more efficient and I think it would also lead to better readability.
My original patch for merging/sorting had some code for that which we could reuse:
>
>http://mail-archives.apache.org/mod_mbox/httpd-dev/201108.mbox/%3C201108240028.03308.sf@sfritsch.de%3E
>
>
>
>
Mime
View raw message