On 09/13/2011 10:17 PM, [email protected] 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
