]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
RGWLC: fix expiration header tag match 32924/head
authorMatt Benjamin <mbenjamin@redhat.com>
Fri, 19 Jul 2019 20:32:20 +0000 (16:32 -0400)
committerYuval Lifshitz <yuvalif@yahoo.com>
Tue, 3 Mar 2020 11:27:01 +0000 (13:27 +0200)
Need to match key->value

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
(cherry picked from commit af327f21aa377a7abd0290814bfa7333db5443c3)
Signed-off-by: Yuval Lifshitz <yuvalif@yahoo.com>
src/rgw/rgw_lc.cc

index e6ce0e8ea999e1a90952690982d59111a0087455..389e2bc48b6b7324d391f63e9a9a2c063a540bb9 100644 (file)
@@ -1604,12 +1604,21 @@ std::string s3_expiration_header(
     }
 
     if (filter.has_tags()) {
-      bool tag_match = true;
+      bool tag_match = false;
       const RGWObjTags& rule_tagset = filter.get_tags();
       for (auto& tag : rule_tagset.get_tags()) {
-       if (obj_tag_map.find(tag.first) == obj_tag_map.end()) {
-         tag_match = false;
-         break;
+       /* remember, S3 tags are {key,value} tuples */
+       auto ma1 = obj_tag_map.find(tag.first);
+       if (ma1 != obj_tag_map.end()) {
+         if (tag.second == ma1->second) {
+           ldpp_dout(dpp, 10) << "tag match obj_key=" << obj_key
+                              << " rule_id=" << id
+                              << " tag=" << tag
+                              << " (ma=" << *ma1 << ")"
+                              << dendl;
+           tag_match = true;
+           break;
+         }
        }
       }
       if (! tag_match)