From cfcb5cc8dafbec71042698b9b5cf50d7fde6c47f Mon Sep 17 00:00:00 2001 From: houfei Date: Fri, 1 Jan 2021 18:24:00 +0800 Subject: [PATCH] rgw: fix the bug that the s3cmd abortmp operation may delete the bucket by mistake --- src/rgw/rgw_rest_s3.cc | 56 ++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 30 deletions(-) diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 5c1a2d9412140d..3f6a0473c2034a 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -4427,38 +4427,34 @@ RGWOp *RGWHandler_REST_Bucket_S3::op_put() RGWOp *RGWHandler_REST_Bucket_S3::op_delete() { - if (s->info.args.sub_resource_exists("logging") || - s->info.args.sub_resource_exists("encryption")) - return nullptr; - - if (is_tagging_op()) { - return new RGWDeleteBucketTags_ObjStore_S3; - } else if (is_cors_op()) { - return new RGWDeleteCORS_ObjStore_S3; - } else if(is_lc_op()) { - return new RGWDeleteLC_ObjStore_S3; - } else if(is_policy_op()) { - return new RGWDeleteBucketPolicy; - } else if (is_notification_op()) { - return RGWHandler_REST_PSNotifs_S3::create_delete_op(); - } else if (is_replication_op()) { - return new RGWDeleteBucketReplication_ObjStore_S3; - } else if (is_block_public_access_op()) { - return new RGWDeleteBucketPublicAccessBlock; - } - - if (s->info.args.sub_resource_exists("website")) { - if (!s->cct->_conf->rgw_enable_static_website) { - return NULL; + if (s->info.args.get_num_params()) { + if (is_tagging_op()) { + return new RGWDeleteBucketTags_ObjStore_S3; + } else if (is_cors_op()) { + return new RGWDeleteCORS_ObjStore_S3; + } else if(is_lc_op()) { + return new RGWDeleteLC_ObjStore_S3; + } else if(is_policy_op()) { + return new RGWDeleteBucketPolicy; + } else if (is_notification_op()) { + return RGWHandler_REST_PSNotifs_S3::create_delete_op(); + } else if (is_replication_op()) { + return new RGWDeleteBucketReplication_ObjStore_S3; + } else if (is_block_public_access_op()) { + return new RGWDeleteBucketPublicAccessBlock; + } else if (s->info.args.sub_resource_exists("website")) { + if (!s->cct->_conf->rgw_enable_static_website) { + return NULL; + } + return new RGWDeleteBucketWebsite_ObjStore_S3; + } else if (s->info.args.exists("mdsearch")) { + return new RGWDelBucketMetaSearch_ObjStore_S3; + } else { + return nullptr; } - return new RGWDeleteBucketWebsite_ObjStore_S3; - } - - if (s->info.args.exists("mdsearch")) { - return new RGWDelBucketMetaSearch_ObjStore_S3; + } else { + return new RGWDeleteBucket_ObjStore_S3; } - - return new RGWDeleteBucket_ObjStore_S3; } RGWOp *RGWHandler_REST_Bucket_S3::op_post()