From 598b152c59bc56a21d50a73bbb3c97c424f67aff Mon Sep 17 00:00:00 2001 From: Ruben d'Arco Date: Fri, 27 Apr 2012 19:45:51 +0200 Subject: [PATCH] Fix trac 444 Make sure we query for '*' whenever we've moved all the way up the tree. --- pdns/packethandler.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) mode change 100644 => 100755 pdns/packethandler.cc diff --git a/pdns/packethandler.cc b/pdns/packethandler.cc old mode 100644 new mode 100755 index 1fabbf49ab..088d9e16b0 --- a/pdns/packethandler.cc +++ b/pdns/packethandler.cc @@ -332,10 +332,14 @@ bool PacketHandler::getBestWildcard(DNSPacket *p, SOAData& sd, const string &tar bool haveSomething=false; wildcard=subdomain; - while ( chopOff( subdomain ) && !haveSomething ) { - B.lookup(QType(QType::ANY), "*."+subdomain, p, sd.domain_id); + while( chopOff( subdomain ) && !haveSomething ) { + if (subdomain.empty()) { + B.lookup(QType(QType::ANY), "*", p, sd.domain_id); + } else { + B.lookup(QType(QType::ANY), "*."+subdomain, p, sd.domain_id); + } while(B.get(rr)) { - if(rr.qtype == p->qtype ||rr.qtype.getCode() == QType::CNAME || (p->qtype.getCode() == QType::ANY && rr.qtype.getCode() != QType::RRSIG)) + if(rr.qtype == p->qtype || rr.qtype.getCode() == QType::CNAME || (p->qtype.getCode() == QType::ANY && rr.qtype.getCode() != QType::RRSIG)) ret->push_back(rr); wildcard="*."+subdomain; haveSomething=true; -- 2.47.2