From: caolei Date: Wed, 20 May 2020 09:28:15 +0000 (+0800) Subject: rgw : add URL encode toward bucket name in forward request X-Git-Tag: v14.2.12~25^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F37435%2Fhead;p=ceph.git rgw : add URL encode toward bucket name in forward request Signed-off-by: caolei (cherry picked from commit 1e4ec14dd0df4e9053ef630c831c93d392508417) --- diff --git a/src/rgw/rgw_rest_client.cc b/src/rgw/rgw_rest_client.cc index c0d1cc1cb376..dde6e29bed34 100644 --- a/src/rgw/rgw_rest_client.cc +++ b/src/rgw/rgw_rest_client.cc @@ -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);