From: Wido den Hollander Date: Tue, 22 Mar 2016 10:35:05 +0000 (+0100) Subject: rgw: Do not send a Content-Length header on a 304 response X-Git-Tag: v10.1.1~118^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=fb4e5cc5d6adc82423d294496855f56e43e8c11d;p=ceph.git 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 --- 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;