]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix error handling during GET on object through Swift API. 5607/head
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Tue, 11 Aug 2015 19:35:47 +0000 (21:35 +0200)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Wed, 19 Aug 2015 11:43:18 +0000 (13:43 +0200)
Fixes: #12724
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/rgw/rgw_rest_swift.cc

index 39dee7867d3290b7265016d7f72861b7dd276746..bdd5b9b1f2bf68b00ac2733c274f5f9bac37cfab 100644 (file)
@@ -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;