]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: Do not send a Content-Length header on a 304 response
authorWido den Hollander <wido@42on.com>
Tue, 22 Mar 2016 10:35:05 +0000 (11:35 +0100)
committerVicente Cheng <freeze.bilsted@gmail.com>
Thu, 31 Mar 2016 09:29:34 +0000 (17:29 +0800)
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 <wido@42on.com>
(cherry picked from commit fb4e5cc5d6adc82423d294496855f56e43e8c11d)

src/rgw/rgw_civetweb.cc

index 4919377e0854ab1c73a37e8fb0f2a48c0c296129..203886876b686fbede169aeb7b53b2a142ba3e1e 100644 (file)
@@ -52,8 +52,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;