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
Submitted by: sf
Reviewed/backported by: jim
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@
1162858 13f79535-47bb-0310-9956-
ffa450edef68
PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
- * mod_deflate: Stop compressing HEAD requests if there is not Content-Length
- header
- Trunk patch: http://svn.apache.org/viewvc?rev=958253&view=rev
- 2.2.x patch: trunk patch works with offset
- +1: sf, covener, jim
-
* mod_reqtimeout: Disable keep-alive after read timeout
Trunk patch: http://svn.apache.org/viewvc?rev=1103213&view=rev
2.2.x patch: trunk patch works except for CHANGES
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)) {