]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: force content-type header for swift account responses without body 4418/head
authorOrit Wasserman <owasserm@redhat.com>
Tue, 21 Apr 2015 10:31:19 +0000 (12:31 +0200)
committerOrit Wasserman <owasserm@redhat.com>
Tue, 21 Apr 2015 14:31:57 +0000 (16:31 +0200)
This regression was introduced in commit 4cfeca03ade21861ab70ca759f94eb244c16cb39

Fixes: #11438
Signed-off-by: Orit Wasserman <owasserm@redhat.com>
src/rgw/rgw_rest.cc
src/rgw/rgw_rest.h
src/rgw/rgw_rest_swift.cc

index dabfc520071494e45586bfe01d18470aabbd3a8d..9e1f049b851b325c26dd6de58350c41930e7de13 100644 (file)
@@ -494,7 +494,8 @@ void dump_start(struct 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;
 
@@ -504,7 +505,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 182a4a3e3dd145248e0407f5c7e3e828c376132b..f28227158001c39b8dd6aea6db955bc88fc31c7a 100644 (file)
@@ -80,7 +80,7 @@ void RGWListBuckets_ObjStore_SWIFT::send_response_begin(bool has_buckets)
   /* Adding account stats in the header to keep align with Swift API */
   dump_account_metadata(s, buckets_count, buckets_objcount, buckets_size, buckets_size_rounded);
   dump_errno(s);
-  end_header(s, NULL);
+  end_header(s, NULL, NULL, true);
 
   if (!ret) {
     dump_start(s);
@@ -307,7 +307,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);
 }