]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
RGWLC: fix expiration header tag match 26160/head
authorMatt Benjamin <mbenjamin@redhat.com>
Fri, 19 Jul 2019 20:32:20 +0000 (16:32 -0400)
committerMatt Benjamin <mbenjamin@redhat.com>
Fri, 19 Jul 2019 20:32:20 +0000 (16:32 -0400)
Need to match key->value

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
src/rgw/rgw_lc.cc

index de3715f3fc3007c3472aef7caca62ebe966f7ed4..1aa67adb965a1dc42b80209b15c3aedc3488bfd6 100644 (file)
@@ -1596,12 +1596,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)