]> granicus.if.org Git - pdns/commitdiff
make additional processing in the recursor optional and turn it off by default (...
authorBert Hubert <bert.hubert@netherlabs.nl>
Fri, 30 Mar 2012 18:46:56 +0000 (18:46 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Fri, 30 Mar 2012 18:46:56 +0000 (18:46 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@2542 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/pdns_recursor.cc
pdns/syncres.cc

index 557cf182580d9bd1cb76fd853f22b16d8d020099..346da3999741e5ff824309a9476eb3af185280bd 100644 (file)
@@ -1696,6 +1696,9 @@ int serviceMain(int argc, char*argv[])
     L<<Logger::Error<<"Assigning local query addresses: "<<e.what();
     exit(99);
   }
+
+  SyncRes::s_doAAAAAdditionalProcessing = ::arg().mustDo("aaaa-additional-processing");
+  SyncRes::s_doAdditionalProcessing = ::arg().mustDo("additional-processing") | SyncRes::s_doAAAAAdditionalProcessing;
   
   SyncRes::s_noEDNSPing = ::arg().mustDo("disable-edns-ping");
   SyncRes::s_noEDNS = ::arg().mustDo("disable-edns");
@@ -1945,6 +1948,7 @@ int main(int argc, char **argv)
     ::arg().set("soa-minimum-ttl","Don't change")="0";
     ::arg().set("soa-serial-offset","Don't change")="0";
     ::arg().set("no-shuffle","Don't change")="off";
+    ::arg().set("additional-processing","turn on to do additional processing")="off";
     ::arg().set("aaaa-additional-processing","turn on to do AAAA additional processing (slow)")="off";
     ::arg().set("local-port","port to listen on")="53";
     ::arg().set("local-address","IP addresses to listen on, separated by spaces or commas. Also accepts ports.")="127.0.0.1";
@@ -2005,6 +2009,7 @@ int main(int argc, char **argv)
     ::arg().set("forward-zones-recurse", "Zones for which we forward queries with recursion bit, comma separated domain=ip pairs")="";
     ::arg().set("forward-zones-file", "File with (+)domain=ip pairs for forwarding")="";
     ::arg().set("export-etc-hosts", "If we should serve up contents from /etc/hosts")="off";
+    // ::arg().set("export-etc-hosts-search-suffix", "Also serve up the contents of /etc/hosts with this suffix")="";
     ::arg().set("etc-hosts-file", "Path to 'hosts' file")="/etc/hosts";
     ::arg().set("serve-rfc1918", "If we should be authoritative for RFC 1918 private IP space")="";
     ::arg().set("auth-can-lower-ttl", "If we follow RFC 2181 to the letter, an authoritative server can lower the TTL of NS records")="off";
index 5cd5416a94ff878d65676b04bd6311a0f95fbd59..2075d1b42be8d44bc8c71720fa96bfbd121dfc76 100644 (file)
@@ -62,6 +62,8 @@ bool SyncRes::s_log;
 
 bool SyncRes::s_noEDNSPing;
 bool SyncRes::s_noEDNS;
+bool SyncRes::s_doAdditionalProcessing;
+bool SyncRes::s_doAAAAAdditionalProcessing;
 
 SyncRes::SyncRes(const struct timeval& now) :  d_outqueries(0), d_tcpoutqueries(0), d_throttledqueries(0), d_timeouts(0), d_unreachables(0),
                                                 d_now(now),
@@ -120,7 +122,7 @@ int SyncRes::beginResolve(const string &qname, const QType &qtype, uint16_t qcla
   
   set<GetBestNSAnswer> beenthere;
   int res=doResolve(qname, qtype, ret, 0, beenthere);
-  if(!res)
+  if(!res && s_doAdditionalProcessing)
     addCruft(qname, ret);
   return res;
 }
@@ -1148,9 +1150,6 @@ void SyncRes::addCruft(const string &qname, vector<DNSResourceRecord>& ret)
 
   LOG<<d_prefix<<qname<<": Starting additional processing"<<endl;
   vector<DNSResourceRecord> addit;
-  static optional<bool> l_doIPv6AP;
-  if(!l_doIPv6AP)
-    l_doIPv6AP=::arg().mustDo("aaaa-additional-processing");
 
   for(vector<DNSResourceRecord>::const_iterator k=ret.begin();k!=ret.end();++k) 
     if( (k->d_place==DNSResourceRecord::ANSWER && (k->qtype==QType(QType::MX) || k->qtype==QType(QType::SRV)))  || 
@@ -1168,7 +1167,7 @@ void SyncRes::addCruft(const string &qname, vector<DNSResourceRecord>& ret)
         host=string(k->content.c_str() + fields[3].first, fields[3].second - fields[3].first);
       else 
         continue;
-      doResolve(host, *l_doIPv6AP ? QType(QType::ADDR) : QType(QType::A), addit, 1, beenthere);
+      doResolve(host, s_doAAAAAdditionalProcessing ? QType(QType::ADDR) : QType(QType::A), addit, 1, beenthere);
     }
   
   if(!addit.empty()) {