]> granicus.if.org Git - pdns/commitdiff
Simplify bindbackend NSEC lookup code, fixing some issues with it in the process
authorPeter van Dijk <peter.van.dijk@netherlabs.nl>
Thu, 1 Mar 2012 10:31:36 +0000 (10:31 +0000)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Thu, 1 Mar 2012 10:31:36 +0000 (10:31 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@2435 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/backends/bind/bindbackend2.cc

index 8a921b1c03ef9cf909173012d8a4f6f70ac49c4d..69cc253c0f9501b4b3d5c623038ae7b66b4ae174 100644 (file)
@@ -834,35 +834,23 @@ bool Bind2Backend::findBeforeAndAfterUnhashed(BB2DomainInfo& bbd, const std::str
 
   recordstorage_t::const_iterator iter = bbd.d_records->lower_bound(domain);
 
-  while(iter != bbd.d_records->begin() && !boost::prior(iter)->auth && boost::prior(iter)->qtype!=QType::NS) {
-    //cerr<<"Going backwards.."<<endl;
-    iter--;
-  }
-  
-  if(iter == bbd.d_records->end()) {
-    //cerr<<"Didn't find anything"<<endl;
-    return false;
-  }
-  if(iter != bbd.d_records->begin()) {
-    //cerr<<"\tFound: '"<<boost::prior(iter)->qname<<"', auth = "<<boost::prior(iter)->auth<<"\n";
+  if (iter == bbd.d_records->end() || (iter->qname) > domain)
+  {
     before = boost::prior(iter)->qname;
   }
-  else {
-    //cerr<<"PANIC! Wanted something before the first record!"<<endl;
-    before.clear();
+  else
+  {
+    before = qname;
   }
 
   //cerr<<"Now upper bound"<<endl;
   iter = bbd.d_records->upper_bound(domain);
 
-  while(iter!=bbd.d_records->end() && (!iter->auth && iter->qtype != QType::NS))
-    iter++;
-
   if(iter == bbd.d_records->end()) {
     //cerr<<"\tFound the end, begin storage: '"<<bbd.d_records->begin()->qname<<"', '"<<bbd.d_name<<"'"<<endl;
     after.clear(); // this does the right thing
   } else {
-    //cerr<<"\tFound: '"<<iter->qname<<"'"<<endl;
+    //cerr<<"\tFound: '"<<(iter->qname)<<"' (nsec3hash='"<<(iter->nsec3hash)<<"')"<<endl;
     after = (iter)->qname;
   }