From: Radoslaw Zarzynski Date: Tue, 11 Aug 2015 19:35:47 +0000 (+0200) Subject: rgw: fix error handling during GET on object through Swift API. X-Git-Tag: v9.1.0~314^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5d8738787f5faff3bf7bf88d480654a5fa129b75;p=ceph.git rgw: fix error handling during GET on object through Swift API. Fixes: #12724 Signed-off-by: Radoslaw Zarzynski --- 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;