]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw : add URL encode toward bucket name in forward request 37435/head
authorcaolei <halei15848934852@163.com>
Wed, 20 May 2020 09:28:15 +0000 (17:28 +0800)
committerVicente Cheng <freeze.bilsted@gmail.com>
Mon, 28 Sep 2020 14:49:58 +0000 (14:49 +0000)
Signed-off-by: caolei <halei15848934852@163.com>
(cherry picked from commit 1e4ec14dd0df4e9053ef630c831c93d392508417)

src/rgw/rgw_rest_client.cc

index c0d1cc1cb376f3febbbae34e99570f122f3bad3d..dde6e29bed3428a935a711625f1f7f1d0812b734 100644 (file)
@@ -280,7 +280,16 @@ int RGWRESTSimpleRequest::forward_request(RGWAccessKey& key, req_info& info, siz
   RGWEnv new_env;
   req_info new_info(cct, &new_env);
   new_info.rebuild_from(info);
-
+  string bucket_encode;
+  string request_uri_encode;
+  size_t pos = new_info.request_uri.substr(1, new_info.request_uri.size() - 1).find("/");
+  string bucket = new_info.request_uri.substr(1, pos);
+  url_encode(bucket, bucket_encode);
+  if (std::string::npos != pos)
+    request_uri_encode = string("/") + bucket_encode + new_info.request_uri.substr(pos + 1);
+  else
+    request_uri_encode = string("/") + bucket_encode;
+  new_info.request_uri = request_uri_encode;
   new_env.set("HTTP_DATE", date_str.c_str());
 
   int ret = sign_request(cct, key, new_env, new_info);