]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: read multipart params in RGWPutObj_ObjStore_S3::get_params
authorCasey Bodley <cbodley@redhat.com>
Wed, 10 Oct 2018 19:54:09 +0000 (15:54 -0400)
committerCasey Bodley <cbodley@redhat.com>
Tue, 16 Oct 2018 15:06:14 +0000 (11:06 -0400)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/rgw_op.h
src/rgw/rgw_rest_s3.cc

index f22c207558a9fefdfefb1106c672fac66f6d8e25..693f82325e23a2b6189e2ed164115e107b0a405b 100644 (file)
@@ -1027,6 +1027,10 @@ protected:
   map<string, string> crypt_http_responses;
   string user_data;
 
+  std::string multipart_upload_id;
+  std::string multipart_part_str;
+  int multipart_part_num = 0;
+
   boost::optional<ceph::real_time> delete_at;
 
 public:
index b98613da52210105cae9f4444627a5b59bd91c12..29dc1d1af9eaed8d5a670107fa763833a27f2643 100644 (file)
@@ -1399,6 +1399,20 @@ int RGWPutObj_ObjStore_S3::get_params()
     }
   }
 
+  multipart_upload_id = s->info.args.get("uploadId");
+  multipart_part_str = s->info.args.get("partNumber");
+  if (!multipart_part_str.empty()) {
+    string err;
+    multipart_part_num = strict_strtol(multipart_part_str.c_str(), 10, &err);
+    if (!err.empty()) {
+      ldpp_dout(s, 10) << "bad part number: " << multipart_part_str << ": " << err << dendl;
+      return -EINVAL;
+    }
+  } else if (!multipart_upload_id.empty()) {
+    ldpp_dout(s, 10) << "part number with no multipart upload id" << dendl;
+    return -EINVAL;
+  }
+
   return RGWPutObj_ObjStore::get_params();
 }