From 767f1f74c9f015d6bb3376266ec77a10a2d2c59a Mon Sep 17 00:00:00 2001 From: Orit Wasserman Date: Tue, 21 Apr 2015 12:31:19 +0200 Subject: [PATCH] rgw: force content-type header for swift account responses without body This regression was introduced in commit 4cfeca03ade21861ab70ca759f94eb244c16cb39 Fixes: #11438 Signed-off-by: Orit Wasserman (cherry picked from commit 009664e560ee37ef6dc170a0155d6c749e151b06) --- src/rgw/rgw_rest.cc | 5 +++-- src/rgw/rgw_rest.h | 3 ++- src/rgw/rgw_rest_swift.cc | 5 +++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/rgw/rgw_rest.cc b/src/rgw/rgw_rest.cc index cadd564631143..4142809f8525f 100644 --- a/src/rgw/rgw_rest.cc +++ b/src/rgw/rgw_rest.cc @@ -427,7 +427,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; @@ -437,7 +438,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"; diff --git a/src/rgw/rgw_rest.h b/src/rgw/rgw_rest.h index 7184535986944..0624e4f77b605 100644 --- a/src/rgw/rgw_rest.h +++ b/src/rgw/rgw_rest.h @@ -362,7 +362,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); diff --git a/src/rgw/rgw_rest_swift.cc b/src/rgw/rgw_rest_swift.cc index 5107173458236..8569c401723ea 100644 --- a/src/rgw/rgw_rest_swift.cc +++ b/src/rgw/rgw_rest_swift.cc @@ -52,7 +52,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); @@ -282,7 +282,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); } -- 2.39.5