From: Christian Hofstaedtler Date: Thu, 13 Jul 2017 09:35:55 +0000 (+0200) Subject: Remove DNSPacket from getAuth() signature X-Git-Tag: rec-4.1.0-alpha1~9^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F5516%2Fhead;p=thirdparty%2Fpdns.git Remove DNSPacket from getAuth() signature --- diff --git a/pdns/dnsbackend.cc b/pdns/dnsbackend.cc index 4711bbefd3..5fca2b903d 100644 --- a/pdns/dnsbackend.cc +++ b/pdns/dnsbackend.cc @@ -33,7 +33,7 @@ #include "dnspacket.hh" #include "dns.hh" -bool DNSBackend::getAuth(DNSPacket *p, SOAData *sd, const DNSName &target) +bool DNSBackend::getAuth(const DNSName &target, SOAData *sd) { return this->getSOA(target, *sd); } diff --git a/pdns/dnsbackend.hh b/pdns/dnsbackend.hh index 86639cec1a..16ec7c5c4a 100644 --- a/pdns/dnsbackend.hh +++ b/pdns/dnsbackend.hh @@ -169,7 +169,7 @@ public: virtual void getAllDomains(vector *domains, bool include_disabled=false) { } /** Determines if we are authoritative for a zone, and at what level */ - virtual bool getAuth(DNSPacket *p, SOAData *sd, const DNSName &target); + virtual bool getAuth(const DNSName &target, SOAData *sd); struct KeyData { std::string content; diff --git a/pdns/packethandler.cc b/pdns/packethandler.cc index 050f2ff3f5..e4be541d29 100644 --- a/pdns/packethandler.cc +++ b/pdns/packethandler.cc @@ -1241,7 +1241,7 @@ DNSPacket *PacketHandler::doQuestion(DNSPacket *p) return r; } - if(!B.getAuth(p, &sd, target)) { + if(!B.getAuth(target, p->qtype, &sd)) { DLOG(L<setA(false); // drop AA if we never had a SOA in the first place diff --git a/pdns/ueberbackend.cc b/pdns/ueberbackend.cc index 198bb9aaeb..008f281444 100644 --- a/pdns/ueberbackend.cc +++ b/pdns/ueberbackend.cc @@ -255,7 +255,7 @@ void UeberBackend::getUpdatedMasters(vector* domains) } } -bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const DNSName &target) +bool UeberBackend::getAuth(const DNSName &target, const QType& qtype, SOAData* sd, bool cachedOk) { bool found = false; int cstat; @@ -264,7 +264,7 @@ bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const DNSName &target) do { // Check cache - if(sd->db != (DNSBackend *)-1 && (d_cache_ttl || d_negcache_ttl)) { + if(cachedOk && (d_cache_ttl || d_negcache_ttl)) { d_question.qtype = QType::SOA; d_question.qname = choppedOff; d_question.zoneId = -1; @@ -307,7 +307,7 @@ bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const DNSName &target) break; } else { DLOG(L<getAuth(p, sd, choppedOff)) { + if((*i)->getAuth(choppedOff, sd)) { DLOG(L<qname<first = sd->qname.wirelength(); j->second = *sd; @@ -347,7 +347,7 @@ bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const DNSName &target) } found: - if(found == (p->qtype == QType::DS)){ + if(found == (qtype == QType::DS)){ DLOG(L<qname<& new_ptrs) { for(const DNSResourceRecord& rr : new_ptrs) { - DNSPacket fakePacket(false); SOAData sd; - sd.db = (DNSBackend *)-1; // getAuth() cache bypass - fakePacket.qtype = QType::PTR; - - if (!B.getAuth(&fakePacket, &sd, rr.qname)) + if (!B.getAuth(rr.qname, QType(QType::PTR), &sd, false)) throw ApiException("Could not find domain for PTR '"+rr.qname.toString()+"' requested for '"+rr.content+"' (while saving)"); string soa_edit_api_kind;