From: Ilsoo Byun Date: Mon, 21 Dec 2020 09:32:14 +0000 (+0900) Subject: rgw: keep underscore in metatdata key X-Git-Tag: v17.1.0~2329^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8cd8fc40d538229a33ca159e59b5202809bd0e7b;p=ceph.git rgw: keep underscore in metatdata key Fixes: https://tracker.ceph.com/issues/48716 Signed-off-by: Ilsoo Byun --- diff --git a/src/rgw/rgw_asio_client.cc b/src/rgw/rgw_asio_client.cc index ccafa3498b8e..82d5d43f8b8d 100644 --- a/src/rgw/rgw_asio_client.cc +++ b/src/rgw/rgw_asio_client.cc @@ -54,6 +54,8 @@ int ClientIO::init_env(CephContext *cct) for (auto src = name.begin(); src != name.end(); ++src, ++dest) { if (*src == '-') { *dest = '_'; + } else if (*src == '_') { + *dest = '-'; } else { *dest = std::toupper(*src); } diff --git a/src/rgw/rgw_auth_s3.cc b/src/rgw/rgw_auth_s3.cc index eca27202373b..108aca827feb 100644 --- a/src/rgw/rgw_auth_s3.cc +++ b/src/rgw/rgw_auth_s3.cc @@ -562,7 +562,7 @@ get_v4_canonical_headers(const req_info& info, std::transform(std::begin(token), std::end(token), std::back_inserter(token_env), [](const int c) { - return c == '-' ? '_' : std::toupper(c); + return c == '-' ? '_' : c == '_' ? '-' : std::toupper(c); }); if (token_env == "HTTP_CONTENT_LENGTH") { diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index b657598dba6e..b6bf4527feb4 100644 --- a/src/rgw/rgw_common.cc +++ b/src/rgw/rgw_common.cc @@ -410,10 +410,12 @@ void req_info::init_meta_info(bool *found_bad_meta) snprintf(name_low, meta_prefixes[0].len - 5 + name_len + 1, "%s%s", meta_prefixes[0].str + 5 /* skip HTTP_ */, name); // normalize meta prefix int j; for (j = 0; name_low[j]; j++) { - if (name_low[j] != '_') - name_low[j] = tolower(name_low[j]); - else + if (name_low[j] == '_') name_low[j] = '-'; + else if (name_low[j] == '-') + name_low[j] = '_'; + else + name_low[j] = tolower(name_low[j]); } name_low[j] = 0;