From fb4e5cc5d6adc82423d294496855f56e43e8c11d Mon Sep 17 00:00:00 2001 From: Wido den Hollander Date: Tue, 22 Mar 2016 11:35:05 +0100 Subject: [PATCH] rgw: Do not send a Content-Length header on a 304 response We tell the client that the content has not changed. If we send a Content-Length header RFC2616 describes that the client MUST use that new value: "If a cache uses a received 304 response to update a cache entry, the cache MUST update the entry to reflect any new field values given in the response." Therefor we should not send a Content-Length header Fixes: #15119 Signed-off-by: Wido den Hollander --- src/rgw/rgw_civetweb.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/rgw/rgw_civetweb.cc b/src/rgw/rgw_civetweb.cc index 8f755d89fb96..d4a03e109d4b 100644 --- a/src/rgw/rgw_civetweb.cc +++ b/src/rgw/rgw_civetweb.cc @@ -53,8 +53,15 @@ int RGWMongoose::complete_request() /* * Status 204 should not include a content-length header * RFC7230 says so + * + * Same goes for status 304: Not Modified + * + * 'If a cache uses a received 304 response to update a cache entry,' + * 'the cache MUST update the entry to reflect any new field values' + * 'given in the response.' + * */ - if (status_num == 204) { + if (status_num == 204 || status_num == 304) { has_content_length = true; } else if (0 && data.length() == 0) { has_content_length = true; -- 2.47.3