]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: make sending Content-Length in 204 and 304 controllable 13514/head
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Thu, 16 Feb 2017 23:56:34 +0000 (00:56 +0100)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Wed, 12 Apr 2017 11:52:17 +0000 (13:52 +0200)
This commit introduces a new configurable "rgw print prohibited
content length" to let operator decide whether RadosGW complies
to RFC 7230 (a part of the HTTP specification) or violates it
but follows the Swift's behavior.

Fixes: http://tracker.ceph.com/issues/16602
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
(cherry picked from commit d8e3e64ec97a3c222a56bb6f510e5e23d7858615)

src/common/config_opts.h
src/rgw/rgw_client_io_filters.h

index 8edeed6dd02a835d24124dd8319493f8bc31edc6..e5c04e8ac16b4163849f7f5e76908e518a4b92b2 100644 (file)
@@ -1443,6 +1443,7 @@ OPTION(rgw_admin_entry, OPT_STR, "admin")  // entry point for which a url is con
 OPTION(rgw_enforce_swift_acls, OPT_BOOL, true)
 OPTION(rgw_swift_token_expiration, OPT_INT, 24 * 3600) // time in seconds for swift token expiration
 OPTION(rgw_print_continue, OPT_BOOL, true)  // enable if 100-Continue works
+OPTION(rgw_print_prohibited_content_length, OPT_BOOL, false) // violate RFC 7230 and send Content-Length in 204 and 304
 OPTION(rgw_remote_addr_param, OPT_STR, "REMOTE_ADDR")  // e.g. X-Forwarded-For, if you have a reverse proxy
 OPTION(rgw_op_thread_timeout, OPT_INT, 10*60)
 OPTION(rgw_op_thread_suicide_timeout, OPT_INT, 0)
index acf3b787426034b44727c990b424607d67247f0f..0ed15102413237d0f74ea6ee6d77a2ee8df97045 100644 (file)
@@ -291,7 +291,8 @@ public:
 
   size_t send_status(const int status,
                      const char* const status_name) override {
-    if (204 == status || 304 == status) {
+    if ((204 == status || 304 == status) &&
+        ! g_conf->rgw_print_prohibited_content_length) {
       action = ContentLengthAction::INHIBIT;
     } else {
       action = ContentLengthAction::FORWARD;