httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ruediger Pluem <rpl...@apache.org>
Subject Re: svn commit: r1170330 - /httpd/httpd/trunk/modules/filters/mod_deflate.c
Date Fri, 16 Sep 2011 14:45:59 GMT


On 09/13/2011 10:17 PM, sf@apache.org wrote:
> Author: sf
> Date: Tue Sep 13 20:17:18 2011
> New Revision: 1170330
> 
> URL: http://svn.apache.org/viewvc?rev=1170330&view=rev
> Log:
> Fix 'Content-Encoding: gzip' missing if the first brigade passed to
> deflate_out_buffer contained zero data bytes but no EOS bucket.
> 
> Don't compress if the added headers and checksums are larger than
> the data to compress (and we know the size of the data in advance).
> 
> Modified:
>     httpd/httpd/trunk/modules/filters/mod_deflate.c
> 
> Modified: httpd/httpd/trunk/modules/filters/mod_deflate.c
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/filters/mod_deflate.c?rev=1170330&r1=1170329&r2=1170330&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/filters/mod_deflate.c (original)
> +++ httpd/httpd/trunk/modules/filters/mod_deflate.c Tue Sep 13 20:17:18 2011
> @@ -426,7 +426,7 @@ static apr_status_t deflate_out_filter(a
>      request_rec *r = f->r;
>      deflate_ctx *ctx = f->ctx;
>      int zRC;
> -    apr_size_t len;
> +    apr_size_t len = 0, blen;
>      const char *data;
>      deflate_filter_config *c;
>  
> @@ -448,28 +448,41 @@ static apr_status_t deflate_out_filter(a
>          char *token;
>          const char *encoding;
>  
> -        /* Delay initialization until we have seen some data */
> -        e = APR_BRIGADE_FIRST(bb);
> -        while (1) {
> -            apr_status_t rc;
> -            if (e == APR_BRIGADE_SENTINEL(bb))
> -                return ap_pass_brigade(f->next, bb);
> -            if (APR_BUCKET_IS_EOS(e)) {
> -                ap_remove_output_filter(f);
> -                return ap_pass_brigade(f->next, bb);
> -            }
> -            if (APR_BUCKET_IS_METADATA(e)) {
> -                e = APR_BUCKET_NEXT(e);
> -                continue;
> -            }
> +        e = APR_BRIGADE_LAST(bb);
> +        if (APR_BUCKET_IS_EOS(e)) {

Does this work if e is the the sentinel (in case of an empty brigade)?

Regards

RĂ¼diger


Mime
View raw message