]> granicus.if.org Git - pdns/commitdiff
Auth: drop broken support for packet-specific SOA replies from backends
authorChristian Hofstaedtler <christian@hofstaedtler.name>
Thu, 6 Oct 2016 17:32:37 +0000 (19:32 +0200)
committerChristian Hofstaedtler <christian@hofstaedtler.name>
Tue, 11 Jul 2017 14:09:09 +0000 (16:09 +0200)
12 files changed:
docs/markdown/appendix/backend-writers-guide.md
modules/luabackend/luabackend.hh
modules/luabackend/minimal.cc
modules/mydnsbackend/mydnsbackend.cc
modules/mydnsbackend/mydnsbackend.hh
modules/opendbxbackend/odbxbackend.cc
modules/opendbxbackend/odbxbackend.hh
pdns/dnsbackend.cc
pdns/dnsbackend.hh
pdns/packethandler.cc
pdns/ueberbackend.cc
pdns/ueberbackend.hh

index 547c9e8aef8da21190af73bf668bfd0c1d3b7ffc..f61e4d25437eccb3301a745daea259ff2a248030 100644 (file)
@@ -34,7 +34,7 @@ Implementing a backend consists of inheriting from the DNSBackend class. For rea
     virtual void lookup(const QType &qtype, const string &qdomain, DNSPacket *pkt_p=0, int zoneId=-1)=0;
     virtual bool list(const string &target, int domain_id)=0;
     virtual bool get(DNSResourceRecord &r)=0;
-    virtual bool getSOA(const string &name, SOAData &soadata, DNSPacket *p=0);
+    virtual bool getSOA(const DNSName &name, SOAData &soadata);
     };
 ```
 
index 05234fea3922b0a00deb6de94be3ed88cc24a607..498fee6f5833fc7adbaf9f86e63dff7f3ed0e728 100644 (file)
@@ -58,7 +58,7 @@ public:
     void lookup(const QType &qtype, const DNSName &qname, DNSPacket *p, int domain_id) override;
     bool get(DNSResourceRecord &rr) override;
     //! fills the soadata struct with the SOA details. Returns false if there is no SOA.
-    bool getSOA(const DNSName &name, SOAData &soadata, DNSPacket *p=0) override;
+    bool getSOA(const DNSName &name, SOAData &soadata);
 
 
 //  MASTER BACKEND
index aadb8f0bd5805af912f608e36798e2b1b5fb8587..8c44a3a482edb833063c1019127766e6f5d3ff75 100644 (file)
@@ -176,12 +176,10 @@ bool LUABackend::get(DNSResourceRecord &rr) {
     return !rr.content.empty();
 }
 
-bool LUABackend::getSOA(const DNSName &name, SOAData &soadata, DNSPacket *p) {
+bool LUABackend::getSOA(const DNSName &name, SOAData &soadata) {
     if (logging)
        L << Logger::Info << backend_name << "(getsoa) BEGIN" << endl;
 
-    dnspacket = p;
-
     lua_rawgeti(lua, LUA_REGISTRYINDEX, f_lua_getsoa);
 
     lua_pushstring(lua, name.toString().c_str());
@@ -190,14 +188,10 @@ bool LUABackend::getSOA(const DNSName &name, SOAData &soadata, DNSPacket *p) {
        string e = backend_name + lua_tostring(lua, -1);
        lua_pop(lua, 1);
 
-       dnspacket = NULL;
-
        throw runtime_error(e);
        return false;
     }
 
-    dnspacket = NULL;
-
     size_t returnedwhat = lua_type(lua, -1);
     if (returnedwhat != LUA_TTABLE) {
        lua_pop(lua, 1 );
index 0d405e417e1f1835b4ff9169c7903aafae38666f..db4751c46972584126aedfcca665f8194da56162 100644 (file)
@@ -210,7 +210,7 @@ bool MyDNSBackend::list(const DNSName &target, int zoneId, bool include_disabled
   return true;
 }
 
-bool MyDNSBackend::getSOA(const DNSName& name, SOAData& soadata, DNSPacket*) {
+bool MyDNSBackend::getSOA(const DNSName& name, SOAData& soadata) {
   string query;
   SSqlStatement::row_t rrow;
 
index 0ee6afa134007d666f29dc37a9c16dc861a33939..52aaf9fcdd19d065991178fbfda4b15172d98d30 100644 (file)
@@ -39,7 +39,7 @@ public:
   void lookup(const QType &, const DNSName &qdomain, DNSPacket *p=0, int zoneId=-1) override;
   bool list(const DNSName &target, int domain_id, bool include_disabled=false) override;
   bool get(DNSResourceRecord &r) override;
-  bool getSOA(const DNSName& name, SOAData& soadata, DNSPacket*) override;
+  bool getSOA(const DNSName& name, SOAData& soadata) override;
   void getAllDomains(vector<DomainInfo> *domains, bool include_disabled=false) override;
 private:
   SMySQL *d_db; 
index e7c459ae803684f5d1633407bf13aa69f8833bda..06fb890a892a1225d7d562c11ea1e69b3d70b3f3 100644 (file)
@@ -179,7 +179,7 @@ bool OdbxBackend::getDomainInfo( const DNSName& domain, DomainInfo& di )
 
 
 
-bool OdbxBackend::getSOA( const DNSName& domain, SOAData& sd, DNSPacket* p )
+bool OdbxBackend::getSOA( const DNSName& domain, SOAData& sd)
 {
         const char* tmp;
 
index 3d5a43a6033b5eff69feb2b37f905465116ffbad..97cae120702b758c468fb9456000563e0fe83d8f 100644 (file)
@@ -77,7 +77,7 @@ public:
         ~OdbxBackend();
 
         void lookup( const QType& qtype, const DNSName& qdomain, DNSPacket* p = 0, int zoneid = -1 ) override;
-        bool getSOA( const DNSName& domain, SOAData& sd, DNSPacket* p ) override;
+        bool getSOA( const DNSName& domain, SOAData& sd ) override;
         bool list( const DNSName& target, int domain_id, bool include_disabled=false ) override;
         bool get( DNSResourceRecord& rr ) override;
 
index 6e70015602e6c34f09495444b03bd08fc7fa3adf..4711bbefd3aac9a348dae699a54af7ea30aff139 100644 (file)
@@ -35,7 +35,7 @@
 
 bool DNSBackend::getAuth(DNSPacket *p, SOAData *sd, const DNSName &target)
 {
-  return this->getSOA(target, *sd, p);
+  return this->getSOA(target, *sd);
 }
 
 void DNSBackend::setArgPrefix(const string &prefix)
@@ -214,9 +214,9 @@ vector<DNSBackend *>BackendMakerClass::all(bool metadataOnly)
     \param domain Domain we want to get the SOA details of
     \param sd SOAData which is filled with the SOA details
 */
-bool DNSBackend::getSOA(const DNSName &domain, SOAData &sd, DNSPacket *p)
+bool DNSBackend::getSOA(const DNSName &domain, SOAData &sd)
 {
-  this->lookup(QType(QType::SOA),domain,p);
+  this->lookup(QType(QType::SOA),domain);
 
   DNSResourceRecord rr;
   rr.auth = true;
index e3d6242a755c35ed320ce7c08cf5fa5ba435574b..86639cec1ad72f31acfea597de099ab627b8f87f 100644 (file)
@@ -125,7 +125,7 @@ public:
   virtual ~DNSBackend(){};
 
   //! fills the soadata struct with the SOA details. Returns false if there is no SOA.
-  virtual bool getSOA(const DNSName &name, SOAData &soadata, DNSPacket *p=0);
+  virtual bool getSOA(const DNSName &name, SOAData &soadata);
 
   //! Calculates a SOA serial for the zone and stores it in the third argument.
   virtual bool calculateSOASerial(const DNSName& domain, const SOAData& sd, time_t& serial);
index 01036d29d15360ec2246034d58435588a49cd41a..1f2ca8fda8bb90c55b350f45fdca8ae9f9ebe95c 100644 (file)
@@ -396,7 +396,7 @@ int PacketHandler::doAdditionalProcessingAndDropAA(DNSPacket *p, DNSPacket *r, c
          !(i->dr.d_type==QType::MX || i->dr.d_type==QType::NS || i->dr.d_type==QType::SRV))
         continue;
 
-      if(r->d.aa && i->dr.d_name.countLabels() && i->dr.d_type==QType::NS && !B.getSOA(i->dr.d_name,sd,p) && !retargeted) { // drop AA in case of non-SOA-level NS answer, except for root referral
+      if(r->d.aa && i->dr.d_name.countLabels() && i->dr.d_type==QType::NS && !B.getSOA(i->dr.d_name,sd) && !retargeted) { // drop AA in case of non-SOA-level NS answer, except for root referral
         r->setA(false);
         //        i->d_place=DNSResourceRecord::AUTHORITY; // XXX FIXME
       }
index cb5eac570e2287995946dcad8a7606e8c56f3aeb..198bb9aaeb888abd729e0ff9db05d0365d88bdfd 100644 (file)
@@ -359,7 +359,7 @@ found:
   return found;
 }
 
-bool UeberBackend::getSOA(const DNSName &domain, SOAData &sd, DNSPacket *p)
+bool UeberBackend::getSOA(const DNSName &domain, SOAData &sd)
 {
   d_question.qtype=QType::SOA;
   d_question.qname=domain;
@@ -378,17 +378,17 @@ bool UeberBackend::getSOA(const DNSName &domain, SOAData &sd, DNSPacket *p)
   }
 
   // not found in neg. or pos. cache, look it up
-  return getSOAUncached(domain, sd, p);
+  return getSOAUncached(domain, sd);
 }
 
-bool UeberBackend::getSOAUncached(const DNSName &domain, SOAData &sd, DNSPacket *p)
+bool UeberBackend::getSOAUncached(const DNSName &domain, SOAData &sd)
 {
   d_question.qtype=QType::SOA;
   d_question.qname=domain;
   d_question.zoneId=-1;
 
   for(vector<DNSBackend *>::const_iterator i=backends.begin();i!=backends.end();++i)
-    if((*i)->getSOA(domain, sd, p)) {
+    if((*i)->getSOA(domain, sd)) {
       if( d_cache_ttl ) {
         DNSZoneRecord rr;
         rr.dr.d_name = sd.qname;
index 37ab30d8849003ef28f628d7e9f7b1f9120d22ed..ece01924709517d54563d6fb7387bca3762f8fe4 100644 (file)
@@ -99,8 +99,8 @@ public:
   void lookup(const QType &, const DNSName &qdomain, DNSPacket *pkt_p=0,  int zoneId=-1);
 
   bool getAuth(DNSPacket *p, SOAData *sd, const DNSName &target);
-  bool getSOA(const DNSName &domain, SOAData &sd, DNSPacket *p=0);
-  bool getSOAUncached(const DNSName &domain, SOAData &sd, DNSPacket *p=0);  // same, but ignores cache
+  bool getSOA(const DNSName &domain, SOAData &sd);
+  bool getSOAUncached(const DNSName &domain, SOAData &sd);  // same, but ignores cache
   bool get(DNSZoneRecord &r);
   void getAllDomains(vector<DomainInfo> *domains, bool include_disabled=false);