From 4e9ebd6bcde89570b08ce48ea845d88ed327ca66 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Mon, 5 Mar 2012 12:37:05 -0800 Subject: [PATCH] rgw: make sure correct locator is used Or more correct: locator is not used where not needed. Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_common.h | 6 ++++++ src/rgw/rgw_op.cc | 9 ++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index 0d9f9ab86673b..328685dcd4d9c 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -714,6 +714,7 @@ public: bucket = b; set_ns(n); set_obj(o); + reset_key(); } int set_ns(const char *n) { if (!n) @@ -734,6 +735,11 @@ public: key = k; } + void reset_key() { + orig_key.clear(); + key.clear(); + } + void set_obj(string& o) { orig_obj = o; if (ns.empty()) { diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index ed4e9d04b5b72..b15cec80cbc66 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -213,9 +213,10 @@ static int read_policy(struct req_state *s, RGWBucketInfo& bucket_info, RGWAcces if (!oid.empty() && !upload_id.empty()) { RGWMPObj mp(oid, upload_id); oid = mp.get_meta(); - obj.set_ns(mp_ns); + obj.init_ns(bucket, oid, mp_ns); + } else { + obj.init(bucket, oid); } - obj.init(bucket, oid); int ret = get_policy_from_attr(s->obj_ctx, policy, obj); if (ret == -ENOENT && object.size()) { /* object does not exist checking the bucket's ACL to make sure @@ -779,13 +780,11 @@ int RGWPutObjProcessor_Atomic::prepare(struct req_state *s) string oid = s->object_str; head_obj.init(s->bucket, s->object_str); - obj.set_ns(shadow_ns); - char buf[33]; gen_rand_alphanumeric(buf, sizeof(buf) - 1); oid.append("_"); oid.append(buf); - obj.init(s->bucket, oid); + obj.init_ns(s->bucket, oid, shadow_ns); return 0; } -- 2.39.5