From 1e4ec14dd0df4e9053ef630c831c93d392508417 Mon Sep 17 00:00:00 2001 From: caolei Date: Wed, 20 May 2020 17:28:15 +0800 Subject: [PATCH] rgw : add URL encode toward bucket name in forward request Signed-off-by: caolei --- src/rgw/rgw_rest_client.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/rgw/rgw_rest_client.cc b/src/rgw/rgw_rest_client.cc index eab3f7a532102..8d7478de61cd1 100644 --- a/src/rgw/rgw_rest_client.cc +++ b/src/rgw/rgw_rest_client.cc @@ -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); -- 2.39.5