From e638af4e4355912ce8873ba04273f5d2ad154e6b Mon Sep 17 00:00:00 2001 From: Otto Moerbeek Date: Mon, 8 Sep 2025 16:24:06 +0200 Subject: [PATCH] rec: do not hash (or compare) OpenTelemetry Trace EDNS value for packetcache Signed-off-by: Otto Moerbeek --- pdns/recursordist/recpacketcache.cc | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pdns/recursordist/recpacketcache.cc b/pdns/recursordist/recpacketcache.cc index 9005bb62f4..144bc67b38 100644 --- a/pdns/recursordist/recpacketcache.cc +++ b/pdns/recursordist/recpacketcache.cc @@ -103,6 +103,8 @@ uint64_t RecursorPacketCache::doWipePacketCache(const DNSName& name, uint16_t qt return count; } +static const std::unordered_set s_skipOptions = {EDNSOptionCode::ECS, EDNSOptionCode::COOKIE, EDNSOptionCode::OTTRACEIDS}; + bool RecursorPacketCache::qrMatch(const packetCache_t::index::type::iterator& iter, const std::string& queryPacket, const DNSName& qname, uint16_t qtype, uint16_t qclass) { // this ignores checking on the EDNS subnet flags! @@ -110,8 +112,7 @@ bool RecursorPacketCache::qrMatch(const packetCache_t::index::type::ite return false; } - static const std::unordered_set optionsToSkip{EDNSOptionCode::COOKIE, EDNSOptionCode::ECS}; - return queryMatches(iter->d_query, queryPacket, qname, optionsToSkip); + return queryMatches(iter->d_query, queryPacket, qname, s_skipOptions); } bool RecursorPacketCache::checkResponseMatches(MapCombo::LockedContent& shard, std::pair::type::iterator, packetCache_t::index::type::iterator> range, const std::string& queryPacket, const DNSName& qname, uint16_t qtype, uint16_t qclass, time_t now, std::string* responsePacket, uint32_t* age, vState* valState, OptPBData* pbdata) @@ -171,8 +172,6 @@ bool RecursorPacketCache::checkResponseMatches(MapCombo::LockedContent& shard, s return false; } -static const std::unordered_set s_skipOptions = {EDNSOptionCode::ECS, EDNSOptionCode::COOKIE}; - bool RecursorPacketCache::getResponsePacket(unsigned int tag, const std::string& queryPacket, const DNSName& qname, uint16_t qtype, uint16_t qclass, time_t now, std::string* responsePacket, uint32_t* age, vState* valState, uint32_t* qhash, OptPBData* pbdata, bool tcp) { -- 2.47.3