goto done;
if (multipart) {
+ bl.clear();
map<string, bufferlist> meta_attrs;
RGWUploadPartInfo info;
string p = "part.";
info.size = s->obj_size;
info.modified = g_clock.now();
::encode(info, bl);
+ RGW_LOG(0) << "JJJ name=" << p << "bl.length()=" << bl.length() << dendl;
meta_attrs[p] = bl;
ret = rgwstore->put_obj_meta(s->user.user_id, s->bucket_str, multipart_meta_obj, NULL, meta_attrs, false);
send_response();
}
-static int get_multiparts_info(struct req_state *s, string& obj, map<uint32_t, RGWUploadPartInfo>& parts)
+static int get_multiparts_info(struct req_state *s, string& obj, map<uint32_t, RGWUploadPartInfo>& parts,
+ RGWAccessControlPolicy& policy)
{
void *handle;
map<string, bufferlist> attrs;
for (iter = attrs.begin(); iter != attrs.end(); ++iter) {
string name = iter->first;
+ if (name.compare(RGW_ATTR_ACL) == 0) {
+ bufferlist& bl = iter->second;
+ bufferlist::iterator bli = bl.begin();
+ ::decode(policy, bli);
+ continue;
+ }
if (name.compare(0, 5, "part.") != 0)
continue;
RGWMultiXMLParser parser;
string obj = s->object_str;
map<uint32_t, RGWUploadPartInfo> obj_parts;
+ RGWAccessControlPolicy policy;
ret = get_params();
if (ret < 0)
obj.append(".");
obj.append(upload_id);
- ret = get_multiparts_info(s, obj, obj_parts);
+ ret = get_multiparts_info(s, obj, obj_parts, policy);
if (ret < 0)
goto done;
obj.append(".");
obj.append(upload_id);
-
- ret = get_multiparts_info(s, obj, parts);
+ ret = get_multiparts_info(s, obj, parts, policy);
done:
send_response();
set_req_state_err(s, ret);
dump_errno(s);
end_header(s, "application/xml");
+
if (ret == 0) {
dump_start(s);
s->formatter->open_obj_section("ListMultipartUploadResult xmlns=\"http://s3.amazonaws.com/doc/2006-03-01/\"");
map<uint32_t, RGWUploadPartInfo>::iterator iter, test_iter;
int i, cur_max = 0;
+
iter = parts.upper_bound(marker);
for (i = 0, test_iter = iter; test_iter != parts.end() && i < max_parts; ++test_iter, ++i) {
cur_max = test_iter->first;
s->formatter->dump_value_str("MaxParts", "%d", max_parts);
s->formatter->dump_value_str("IsTruncated", "%s", (test_iter == parts.end() ? "false" : "true"));
+ ACLOwner& owner = policy.get_owner();
+ dump_owner(s, owner.get_id(), owner.get_display_name());
+
for (; iter != parts.end(); ++iter) {
RGWUploadPartInfo& info = iter->second;