From: Kees Monshouwer Date: Tue, 18 Oct 2022 18:35:01 +0000 (+0200) Subject: auth: fix axfr for tinydns and pipe backend X-Git-Tag: dnsdist-1.8.0-rc1~275^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F12097%2Fhead;p=thirdparty%2Fpdns.git auth: fix axfr for tinydns and pipe backend --- diff --git a/pdns/tcpreceiver.cc b/pdns/tcpreceiver.cc index bda0c7b108..00187748a3 100644 --- a/pdns/tcpreceiver.cc +++ b/pdns/tcpreceiver.cc @@ -593,7 +593,7 @@ int TCPNameserver::doAXFR(const DNSName &target, std::unique_ptr& q, g_log<& q, return 0; } - if (!(*packetHandler)->getBackend()->getDomainInfo(target, di, false)) { + if (!(*packetHandler)->getBackend()->getSOAUncached(target, sd)) { g_log<setRcode(RCode::NotAuth); sendPacket(outpacket,outsock); @@ -619,7 +619,6 @@ int TCPNameserver::doAXFR(const DNSName &target, std::unique_ptr& q, } UeberBackend db; - SOAData sd; if(!db.getSOAUncached(target, sd)) { g_log<setRcode(RCode::NotAuth); @@ -632,11 +631,14 @@ int TCPNameserver::doAXFR(const DNSName &target, std::unique_ptr& q, bool NSEC3Zone = false; bool narrow = false; + DomainInfo di; + bool isCatalogZone = sd.db->getDomainInfo(target, di, false) && di.isCatalogType(); + NSEC3PARAMRecordContent ns3pr; DNSSECKeeper dk(&db); DNSSECKeeper::clearCaches(target); - if (!di.isCatalogType()) { + if (!isCatalogZone) { securedZone = dk.isSecuredZone(target); presignedZone = dk.isPresigned(target); } @@ -799,7 +801,7 @@ int TCPNameserver::doAXFR(const DNSName &target, std::unique_ptr& q, // Catalog zone end // now start list zone - if (!(sd.db->list(target, sd.domain_id, di.isCatalogType()))) { + if (!sd.db->list(target, sd.domain_id, isCatalogZone)) { g_log<setRcode(RCode::ServFail); sendPacket(outpacket,outsock);