From a63738694016558edcbd22c118e130ecc2aca961 Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Fri, 19 Jul 2019 16:32:20 -0400 Subject: [PATCH] RGWLC: fix expiration header tag match Need to match key->value Signed-off-by: Matt Benjamin (cherry picked from commit af327f21aa377a7abd0290814bfa7333db5443c3) --- src/rgw/rgw_lc.cc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/rgw/rgw_lc.cc b/src/rgw/rgw_lc.cc index 7182a35400b595..351a0c76a2146c 100644 --- a/src/rgw/rgw_lc.cc +++ b/src/rgw/rgw_lc.cc @@ -1536,12 +1536,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)