]> granicus.if.org Git - pdns/commitdiff
throw AAAA records in the mix for resolution if we have them lying around, even if...
authorbert hubert <bert.hubert@netherlabs.nl>
Thu, 5 Feb 2015 12:24:52 +0000 (13:24 +0100)
committerbert hubert <bert.hubert@netherlabs.nl>
Thu, 5 Feb 2015 12:24:52 +0000 (13:24 +0100)
pdns/syncres.cc

index e688531535dc565505250d1477edf715429eca35..b48b0746345ed62eacfaf971d3f34eaf27a8887c 100644 (file)
@@ -492,7 +492,19 @@ vector<ComboAddress> SyncRes::getAddrs(const string &qname, int depth, set<GetBe
         }
       }
     }
-    if(done) break;
+    if(done) { 
+      if(j==1 && s_doIPv6) { // we got an A record, see if we have some AAAA lying around
+       set<DNSResourceRecord> cset;
+       if(t_RC->get(d_now.tv_sec, qname, QType(QType::AAAA), &cset) > 0) {
+         for(set<DNSResourceRecord>::const_iterator k=cset.begin();k!=cset.end();++k) {
+           if(k->ttl > (unsigned int)d_now.tv_sec ) { 
+             ret.push_back(ComboAddress(k->content, 53));
+           }
+         }
+       }
+      }
+      break;
+    }
   }
   
   if(ret.size() > 1) {