From: Bert Hubert Date: Wed, 18 Jan 2006 22:33:58 +0000 (+0000) Subject: fix problem reported by Lionel Elie Mamane (who also sent a patch, fixed it different... X-Git-Tag: pdns-2.9.20~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e29f6ed0e9f9566acf6c4302c457a65fd05000a8;p=thirdparty%2Fpdns.git fix problem reported by Lionel Elie Mamane (who also sent a patch, fixed it differently though) git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@562 d19b8d6e-7fed-0310-83ef-9ca221ded41b --- diff --git a/pdns/syncres.cc b/pdns/syncres.cc index 890d0641d9..c29d5d4f94 100644 --- a/pdns/syncres.cc +++ b/pdns/syncres.cc @@ -584,6 +584,7 @@ void SyncRes::addCruft(const string &qname, vector& ret) LOG< addit; + bool doIPv6AP=arg().mustDo("aaaa-additional-processing"); for(vector::const_iterator k=ret.begin();k!=ret.end();++k) if((k->d_place==DNSResourceRecord::ANSWER && k->qtype==QType(QType::MX)) || ((k->d_place==DNSResourceRecord::AUTHORITY || k->d_place==DNSResourceRecord::ANSWER) && k->qtype==QType(QType::NS))) { @@ -591,16 +592,22 @@ void SyncRes::addCruft(const string &qname, vector& ret) setbeenthere; if(k->qtype==QType(QType::MX)) { string::size_type pos=k->content.find_first_not_of(" \t0123456789"); // chop off the priority - if(pos!=string::npos) + if(pos!=string::npos) { doResolve(toLowerCanonic(k->content.substr(pos)), QType(QType::A),addit,1,beenthere); - else + if(doIPv6AP) + doResolve(toLowerCanonic(k->content.substr(pos)), QType(QType::AAAA),addit,1,beenthere); + } + else { doResolve(toLowerCanonic(k->content), QType(QType::A),addit,1,beenthere); + if(doIPv6AP) + doResolve(toLowerCanonic(k->content.substr(pos)), QType(QType::AAAA),addit,1,beenthere); + } } - else + else { doResolve(k->content,QType(QType::A),addit,1,beenthere); - - if(arg().mustDo("aaaa-additional-processing")) - doResolve(k->content,QType(QType::AAAA),addit,1,beenthere); + if(doIPv6AP) + doResolve(k->content,QType(QType::AAAA),addit,1,beenthere); + } } for(vector::iterator k=addit.begin();k!=addit.end();++k) {