summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Jagielski <jim@apache.org>2016-12-12 15:21:29 +0000
committerJim Jagielski <jim@apache.org>2016-12-12 15:21:29 +0000
commit541623e63b7ff10a6fa1cf45e6331fc99b57ef6c (patch)
tree029081a019524fca1754617e251302f9bff15db4
parentbb85ed16453629b03e478d33dbe2a2439232c9bf (diff)
downloadhttpd-541623e63b7ff10a6fa1cf45e6331fc99b57ef6c.tar.gz
Merge r1773346 from trunk:
Drop C-L header and message-body from HTTP 204 responses. The C-L header can be set in a fcgi/cgi backend or in other filters like ap_content_length_filter (with the value of 0), meanwhile the message-body can be returned incorrectly by any backend. The idea is to remove unnecessary bytes from a HTTP 204 response. PR 51350 Submitted by: elukey Reviewed/backported by: jim git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1773801 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--CHANGES5
-rw-r--r--STATUS5
-rw-r--r--modules/http/http_filters.c8
3 files changed, 10 insertions, 8 deletions
diff --git a/CHANGES b/CHANGES
index 9f841a6191..ab18d3b420 100644
--- a/CHANGES
+++ b/CHANGES
@@ -22,7 +22,10 @@ Changes with Apache 2.4.24
MAC (SipHash) to prevent deciphering or tampering with a padding
oracle attack. [Yann Ylavic, Colm MacCarthaigh]
- *) mod_proxy: Honor a server scoped ProxyPass exception when ProxyPass is
+ *) core: Drop Content-Length header and message-body from HTTP 204 responses.
+ PR 51350 [Luca Toscano]
+
+ *) mod_proxy: Honor a server scoped ProxyPass exception when ProxyPass is
configured in <Location>, like in 2.2. PR 60458.
[Eric Covener]
diff --git a/STATUS b/STATUS
index 4fe0e94bfd..bfb116b135 100644
--- a/STATUS
+++ b/STATUS
@@ -136,11 +136,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
https://svn.apache.org/r1773163
+1: wrowe, jim, ylavic
- *) core: Drop Content-Length header and message-body from HTTP 204 responses.
- Trunk patch: http://svn.apache.org/r1773346
- 2.4.x patch: trunk works modulo CHANGES
- +1: elukey, wrowe, ylavic
-
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
[ New proposals should be added at the end of the list ]
diff --git a/modules/http/http_filters.c b/modules/http/http_filters.c
index 45c1d81198..9ce2a2a599 100644
--- a/modules/http/http_filters.c
+++ b/modules/http/http_filters.c
@@ -1262,7 +1262,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f,
AP_DEBUG_ASSERT(!r->main);
- if (r->header_only) {
+ if (r->header_only || r->status == HTTP_NO_CONTENT) {
if (!ctx) {
ctx = f->ctx = apr_pcalloc(r->pool, sizeof(header_filter_ctx));
}
@@ -1353,6 +1353,10 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f,
apr_table_unset(r->headers_out, "Content-Length");
}
+ if (r->status == HTTP_NO_CONTENT) {
+ apr_table_unset(r->headers_out, "Content-Length");
+ }
+
ctype = ap_make_content_type(r, r->content_type);
if (ctype) {
apr_table_setn(r->headers_out, "Content-Type", ctype);
@@ -1442,7 +1446,7 @@ AP_CORE_DECLARE_NONSTD(apr_status_t) ap_http_header_filter(ap_filter_t *f,
ap_pass_brigade(f->next, b2);
- if (r->header_only) {
+ if (r->header_only || r->status == HTTP_NO_CONTENT) {
apr_brigade_cleanup(b);
ctx->headers_sent = 1;
return OK;