From d6207d562e95035e92e357e4b116096f0206f1a2 Mon Sep 17 00:00:00 2001 From: Gabriel Adrian Samfira Date: Fri, 3 Nov 2023 00:41:09 +0200 Subject: [PATCH] Do not encode slashes Encoding the slash in object names breaks when the object we're trying to fetch is inside a folder. A side effect of this is that the cloud sync module fails to sync folders and objects nested within. Signed-off-by: Gabriel Adrian Samfira (cherry picked from commit 6b2e616b9321774ac2ccc54ab19233894b9793c5) --- src/rgw/rgw_rest_client.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/rgw/rgw_rest_client.cc b/src/rgw/rgw_rest_client.cc index b0b8fcc84f3..153f637c67b 100644 --- a/src/rgw/rgw_rest_client.cc +++ b/src/rgw/rgw_rest_client.cc @@ -803,7 +803,8 @@ static void send_prepare_convert(const rgw_obj& obj, string *resource) { string urlsafe_bucket, urlsafe_object; url_encode(obj.bucket.get_key(':', 0), urlsafe_bucket); - url_encode(obj.key.name, urlsafe_object); + // do not encode slash. It leads to 404 errors when fetching objects inside folders. + url_encode(obj.key.name, urlsafe_object, false); *resource = urlsafe_bucket + "/" + urlsafe_object; } -- 2.39.5