]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: force content-type header for swift account responses without body
authorOrit Wasserman <owasserm@redhat.com>
Tue, 21 Apr 2015 10:31:19 +0000 (12:31 +0200)
committerLoic Dachary <ldachary@redhat.com>
Thu, 3 Sep 2015 11:28:50 +0000 (13:28 +0200)
This regression was introduced in commit 4cfeca03ade21861ab70ca759f94eb244c16cb39

Fixes: #11438
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
(cherry picked from commit 009664e560ee37ef6dc170a0155d6c749e151b06)

src/rgw/rgw_rest.cc
src/rgw/rgw_rest.h
src/rgw/rgw_rest_swift.cc

index 6873bd1086d829ce6007c8245a486d24d5d2d617..a9fa43428e4f8b5fba4819ce2c88a00682e40ce3 100644 (file)
@@ -502,7 +502,8 @@ void dump_trans_id(req_state *s)
   }
 }
 
-void end_header(struct req_state *s, RGWOp *op, const char *content_type, const int64_t proposed_content_length)
+void end_header(struct req_state *s, RGWOp *op, const char *content_type, const int64_t proposed_content_length,
+               bool force_content_type)
 {
   string ctype;
 
@@ -514,7 +515,7 @@ void end_header(struct req_state *s, RGWOp *op, const char *content_type, const
 
   /* do not send content type if content length is zero
      and the content type was not set by the user */
-  if ((s->formatter->get_len()  != 0 && !content_type) || s->err.is_err()){
+  if (force_content_type || (!content_type &&  s->formatter->get_len()  != 0) || s->err.is_err()){
     switch (s->format) {
     case RGW_FORMAT_XML:
       ctype = "application/xml";
index c92a59a81848895cc9b65522feb4c57c6d42ef8b..02ae790edaabadd6333b41e6120a869741f45283 100644 (file)
@@ -365,7 +365,8 @@ extern void dump_errno(struct req_state *s, int ret);
 extern void end_header(struct req_state *s,
                        RGWOp *op = NULL,
                        const char *content_type = NULL,
-                       const int64_t proposed_content_length = NO_CONTENT_LENGTH);
+                       const int64_t proposed_content_length = NO_CONTENT_LENGTH,
+                      bool force_content_type = false);
 extern void dump_start(struct req_state *s);
 extern void list_all_buckets_start(struct req_state *s);
 extern void dump_owner(struct req_state *s, string& id, string& name, const char *section = NULL);
index 9513cd6128626eca8fab7056dd4f8c4d0effde32..476ed5746b7eb7b847fde7a69c12a32c0cf539c3 100644 (file)
@@ -54,7 +54,7 @@ void RGWListBuckets_ObjStore_SWIFT::send_response_begin(bool has_buckets)
     set_req_state_err(s, ret);
   }
   dump_errno(s);
-  end_header(s, NULL);
+  end_header(s, NULL, NULL, true);
 
   if (!ret) {
     dump_start(s);
@@ -295,7 +295,8 @@ void RGWStatAccount_ObjStore_SWIFT::send_response()
   set_req_state_err(s, ret);
   dump_errno(s);
 
-  end_header(s, NULL, NULL, 0);
+  end_header(s, NULL, NULL, 0,  true);
+
   dump_start(s);
 }