]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: keep underscore in metatdata key 38737/head
authorIlsoo Byun <ilsoobyun@linecorp.com>
Mon, 21 Dec 2020 09:32:14 +0000 (18:32 +0900)
committerIlsoo Byun <ilsoobyun@linecorp.com>
Wed, 30 Dec 2020 06:07:43 +0000 (15:07 +0900)
Fixes: https://tracker.ceph.com/issues/48716
Signed-off-by: Ilsoo Byun <ilsoobyun@linecorp.com>
src/rgw/rgw_asio_client.cc
src/rgw/rgw_auth_s3.cc
src/rgw/rgw_common.cc

index ccafa3498b8effd7cd6431263dac89564d80418c..82d5d43f8b8d141b0916eb1f527fbd73e29fdce2 100644 (file)
@@ -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);
       }
index eca27202373b2f78feef30e4dd2398acdfbe3430..108aca827febfc5c1acc53bc2171b7b14299167e 100644 (file)
@@ -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") {
index b657598dba6e3f4d0e8f40b9e101a37ef0b22320..b6bf4527feb4bc0cdd8171830a38dc56d0015d25 100644 (file)
@@ -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;