diff --git a/modules/tinydnsbackend/data b/modules/tinydnsbackend/data index 06c8f6161170..c09744d5cff2 100644 --- a/modules/tinydnsbackend/data +++ b/modules/tinydnsbackend/data @@ -20190,7 +20190,9 @@ Zexample.com:ns1.example.com.:ahu.example.com.:2847484148:28800:7200:604800:8640 :_underscore.test.com:16:\030underscores\040are\040terrible:3600 :aland.test.com:16:\016\303\205LAND\040ISLANDS:3600 :d.test.com:39:\002d2\005test2\003com\000:3600 -:enum.test.com:35:\000d\0002\001u\007e2u\053sip\000\010testuser\006domain\003com\000:3600 +:enam.test.com:35:\000d\0002\001a\007e2u\053sip\000\007server1\004test\003com\000:3600 +:ensm.test.com:35:\000d\0002\001s\007e2u\053sip\000\007_double\004_tcp\002dc\004test\003com\000:3600 +:enum.test.com:35:\000d\0002\001u\007e2u\053sip\000\007server1\004test\003com\000:3600 :hightxt.test.com:16:\042v\075spf1\040mx\040ip4\07278.46.192.210\040\342\200\223all:3600 :hightxt.test.com:99:\042v\075spf1\040mx\040ip4\07278.46.192.210\040\342\200\223all:3600 :interrupted-rrset.test.com:16:\023check\040AXFR\040signpipe:3600 diff --git a/modules/tinydnsbackend/data.cdb b/modules/tinydnsbackend/data.cdb index 98225edd8ca8..d23f0e588777 100644 Binary files a/modules/tinydnsbackend/data.cdb and b/modules/tinydnsbackend/data.cdb differ diff --git a/pdns/packethandler.cc b/pdns/packethandler.cc index e63a5d9c8a8d..40c1ed2d8893 100644 --- a/pdns/packethandler.cc +++ b/pdns/packethandler.cc @@ -510,9 +510,11 @@ DNSName PacketHandler::doAdditionalServiceProcessing(const DNSName &firstTarget, } +// NOLINTNEXTLINE(readability-function-cognitive-complexity) void PacketHandler::doAdditionalProcessing(DNSPacket& p, std::unique_ptr& r) { DNSName content; + DNSZoneRecord dzr; std::unordered_set lookup; vector extraRecords; const auto& rrs = r->getRRS(); @@ -520,6 +522,7 @@ void PacketHandler::doAdditionalProcessing(DNSPacket& p, std::unique_ptr(rr.dr)->getNS(); @@ -542,10 +545,34 @@ void PacketHandler::doAdditionalProcessing(DNSPacket& p, std::unique_ptr(rr.dr); + auto flags = naptrContent->getFlags(); + toLowerInPlace(flags); + if (flags.find('a') != string::npos) { + content = naptrContent->getReplacement(); + DLOG(g_log<