From 5d8738787f5faff3bf7bf88d480654a5fa129b75 Mon Sep 17 00:00:00 2001 From: Radoslaw Zarzynski Date: Tue, 11 Aug 2015 21:35:47 +0200 Subject: [PATCH] rgw: fix error handling during GET on object through Swift API. Fixes: #12724 Signed-off-by: Radoslaw Zarzynski --- src/rgw/rgw_rest_swift.cc | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/rgw/rgw_rest_swift.cc b/src/rgw/rgw_rest_swift.cc index 39dee7867d32..bdd5b9b1f2bf 100644 --- a/src/rgw/rgw_rest_swift.cc +++ b/src/rgw/rgw_rest_swift.cc @@ -777,11 +777,20 @@ int RGWGetObj_ObjStore_SWIFT::send_response_data(bufferlist& bl, off_t bl_ofs, o { string content_type; - if (sent_header) + if (sent_header) { goto send_data; + } + + set_req_state_err(s, (partial_content && !ret) ? STATUS_PARTIAL_CONTENT : ret); + dump_errno(s); + if (s->err.is_err()) { + end_header(s, NULL); + return 0; + } - if (range_str) + if (range_str) { dump_range(s, ofs, end, s->obj_size); + } dump_content_length(s, total_len); dump_last_modified(s, lastmod); @@ -801,8 +810,6 @@ int RGWGetObj_ObjStore_SWIFT::send_response_data(bufferlist& bl, off_t bl_ofs, o dump_object_metadata(s, attrs); } - set_req_state_err(s, (partial_content && !ret) ? STATUS_PARTIAL_CONTENT : ret); - dump_errno(s); end_header(s, this, !content_type.empty() ? content_type.c_str() : "binary/octet-stream"); sent_header = true; -- 2.47.3