From: Jing Wenjun Date: Wed, 8 Feb 2017 07:07:43 +0000 (+0800) Subject: rgw: fix swift cannot disable object versioning with empty X-Versions-Location X-Git-Tag: v10.2.7~15^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F13823%2Fhead;p=ceph.git rgw: fix swift cannot disable object versioning with empty X-Versions-Location we should be able to disable object verioning by removing its X-Versions-Location metadata header by sending an empty key value. this description can be found at No.8 in http://docs.openstack.org/user-guide/cli-swift-set-object-versions.html. Fixes: http://tracker.ceph.com/issues/18852 Signed-off-by: Jing Wenjun (cherry picked from commit 17c5a0edd2227703cec867f0f588d4eae36dfe1c) --- diff --git a/src/rgw/rgw_rest_swift.cc b/src/rgw/rgw_rest_swift.cc index 7b4a3e1ffc7..d63a772c2e7 100644 --- a/src/rgw/rgw_rest_swift.cc +++ b/src/rgw/rgw_rest_swift.cc @@ -528,8 +528,7 @@ static int get_swift_versioning_settings( swift_ver_location = boost::in_place(std::string()); } - std::string vloc = s->info.env->get("HTTP_X_VERSIONS_LOCATION", ""); - if (vloc.size()) { + if (s->info.env->exists("HTTP_X_VERSIONS_LOCATION")) { /* If the Swift's versioning is globally disabled but someone wants to * enable it for a given container, new version of Swift will generate * the precondition failed error. */ @@ -537,7 +536,7 @@ static int get_swift_versioning_settings( return -ERR_PRECONDITION_FAILED; } - swift_ver_location = std::move(vloc); + swift_ver_location = s->info.env->get("HTTP_X_VERSIONS_LOCATION", ""); } return 0;