From 08e3fd9911967cdb65ba8b6d18d05960ed9d856e Mon Sep 17 00:00:00 2001 From: Stefan Fritsch Date: Sat, 26 Jun 2010 17:41:01 +0000 Subject: [PATCH] Stop compressing if we are doing a HEAD request and the content-length filter can't determine the content-length anyway. Submitted by: Ruediger Pluem git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@958253 13f79535-47bb-0310-9956-ffa450edef68 --- modules/filters/mod_deflate.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/filters/mod_deflate.c b/modules/filters/mod_deflate.c index e40a8b0fca..c3be180bf7 100644 --- a/modules/filters/mod_deflate.c +++ b/modules/filters/mod_deflate.c @@ -637,6 +637,19 @@ static apr_status_t deflate_out_filter(ap_filter_t *f, apr_bucket *b; apr_size_t len; + /* + * Optimization: If we are a HEAD request and bytes_sent is not zero + * it means that we have passed the content-length filter once and + * have more data to sent. This means that the content-length filter + * could not determine our content-length for the response to the + * HEAD request anyway (the associated GET request would deliver the + * body in chunked encoding) and we can stop compressing. + */ + if (r->header_only && r->bytes_sent) { + ap_remove_output_filter(f); + return ap_pass_brigade(f->next, bb); + } + e = APR_BRIGADE_FIRST(bb); if (APR_BUCKET_IS_EOS(e)) { -- 2.50.1