]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: rectify 202 Accepted in response for PUT on existing bucket. 4104/head
authorRadoslaw Zarzynski <rzarzynski@mirantis.com>
Thu, 19 Mar 2015 13:52:18 +0000 (14:52 +0100)
committerRadoslaw Zarzynski <rzarzynski@mirantis.com>
Thu, 19 Mar 2015 13:59:50 +0000 (14:59 +0100)
Fixes: #11148
Backport: hammer
Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
src/rgw/rgw_op.cc

index b2dd7c2d7f611b4c880b9b69d9dbf6d7039697ea..04ed4b5af450051939a4e791d0c453f77cff476f 100644 (file)
@@ -1409,10 +1409,11 @@ void RGWCreateBucket::execute()
     /* bucket already existed, might have raced with another bucket creation, or
      * might be partial bucket creation that never completed. Read existing bucket
      * info, verify that the reported bucket owner is the current user.
-     * If all is ok then update the user's list of buckets
+     * If all is ok then update the user's list of buckets.
+     * Otherwise inform client about a name conflict.
      */
     if (info.owner.compare(s->user.user_id) != 0) {
-      ret = -ERR_BUCKET_EXISTS;
+      ret = -EEXIST;
       return;
     }
     s->bucket = info.bucket;
@@ -1424,10 +1425,9 @@ void RGWCreateBucket::execute()
     if (ret < 0) {
       ldout(s->cct, 0) << "WARNING: failed to unlink bucket: ret=" << ret << dendl;
     }
-  }
-
-  if (ret == -EEXIST)
+  } else if (ret == -EEXIST || (ret == 0 && existed)) {
     ret = -ERR_BUCKET_EXISTS;
+  }
 }
 
 int RGWDeleteBucket::verify_permission()