]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fix create bucket error handling
authorYehuda Sadeh <yehuda@redhat.com>
Wed, 20 Jan 2016 19:52:48 +0000 (11:52 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Wed, 20 Jan 2016 19:52:48 +0000 (11:52 -0800)
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_op.cc
src/rgw/rgw_op.h
src/rgw/rgw_rest_swift.cc

index 747c224d04d02a93eb4d610507d9200f0f1505ba..34a5ff3e7ca0e1b11b1203dc6da599e7350b5693 100644 (file)
@@ -1833,7 +1833,8 @@ void RGWCreateBucket::execute()
       ldout(s->cct, 0) << "WARNING: failed to unlink bucket: ret=" << ret << dendl;
     }
   } else if (ret == -EEXIST || (ret == 0 && existed)) {
-    ret = -ERR_BUCKET_EXISTS;
+    ret = 0;
+    exist_ret = -ERR_BUCKET_EXISTS;
   }
 }
 
index 5598c4b495648fa9f3ba3829785f2b021ee58846..5395817bb97559ccec25e1bfc3a6af4aeb781b1b 100644 (file)
@@ -530,8 +530,10 @@ protected:
 
   bufferlist in_data;
 
+  int exist_ret;
+
 public:
-  RGWCreateBucket() : has_cors(false) {}
+  RGWCreateBucket() : has_cors(false), exist_ret(0) {}
 
   int verify_permission();
   void pre_exec();
index b170272bdea6a6ced7a1ff8c67b3390799b91e5c..a0bcc04fb4b5aa927c7ab700cbeecee3489d3f07 100644 (file)
@@ -467,10 +467,11 @@ int RGWCreateBucket_ObjStore_SWIFT::get_params()
 
 void RGWCreateBucket_ObjStore_SWIFT::send_response()
 {
-  if (!ret)
-    ret = STATUS_CREATED;
-  else if (ret == -ERR_BUCKET_EXISTS)
+  if (exist_ret == -ERR_BUCKET_EXISTS) {
     ret = STATUS_ACCEPTED;
+  } else if (!ret) {
+    ret = STATUS_CREATED;
+  }
   set_req_state_err(s, ret);
   dump_errno(s);
   /* Propose ending HTTP header with 0 Content-Length header. */