]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Do not encode slashes 54311/head
authorGabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Thu, 2 Nov 2023 22:41:09 +0000 (00:41 +0200)
committerGabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
Thu, 2 Nov 2023 22:41:09 +0000 (00:41 +0200)
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 <gsamfira@cloudbasesolutions.com>
src/rgw/rgw_rest_client.cc

index b0b8fcc84f30eb18078f0fa45327009bd5f53178..153f637c67bf3420f363125926a5997789ae6eeb 100644 (file)
@@ -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;
 }