]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw : add URL encode toward bucket name in forward request 37340/head
authorcaolei <halei15848934852@163.com>
Wed, 20 May 2020 09:28:15 +0000 (17:28 +0800)
committerNathan Cutler <ncutler@suse.com>
Wed, 23 Sep 2020 11:18:14 +0000 (13:18 +0200)
Signed-off-by: caolei <halei15848934852@163.com>
(cherry picked from commit 1e4ec14dd0df4e9053ef630c831c93d392508417)

src/rgw/rgw_rest_client.cc

index eab3f7a5321024c92f67348e79a4fea28aebb3b3..8d7478de61cd1a07c23b4b2cf4dfdcf67e911904 100644 (file)
@@ -279,7 +279,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);