From 7c5f20e391bb34f4bc56f0ed86aee4cc3eebf368 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Fri, 14 Jun 2013 14:53:54 -0700 Subject: rgw: escape prefix correctly when listing objects Fixes: #5362 When listing objects prefix needs to be escaped correctly (the same as with the marker). Otherwise listing objects with prefix that starts with underscore doesn't work. Backport: bobtail, cuttlefish Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_rados.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index b22217994ba..7a2f2d04d3b 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -735,14 +735,18 @@ int RGWRados::list_objects(rgw_bucket& bucket, int max, string& prefix, string& } result.clear(); - rgw_obj marker_obj; + rgw_obj marker_obj, prefix_obj; marker_obj.set_ns(ns); marker_obj.set_obj(marker); string cur_marker = marker_obj.object; + prefix_obj.set_ns(ns); + prefix_obj.set_obj(prefix); + string cur_prefix = prefix_obj.object; + do { std::map ent_map; - int r = cls_bucket_list(bucket, cur_marker, prefix, max - count, ent_map, + int r = cls_bucket_list(bucket, cur_marker, cur_prefix, max - count, ent_map, &truncated, &cur_marker); if (r < 0) return r; -- cgit v1.2.1