]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Lowercase all outgoing qnames when lowercase-outgoing is set 5765/head
authorPieter Lexis <pieter.lexis@powerdns.com>
Thu, 28 Sep 2017 11:13:13 +0000 (13:13 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Thu, 28 Sep 2017 11:13:13 +0000 (13:13 +0200)
This is a backport of #5740

pdns/pdns_recursor.cc
pdns/syncres.cc
pdns/syncres.hh

index ef523a010ab191bc42165892e76392a41376ebe4..4efc81e486900f28c492d55f906ba1527c27390b 100644 (file)
@@ -745,10 +745,6 @@ void startDoResolve(void *p)
     pw.getHeader()->rd=dc->d_mdp.d_header.rd;
     pw.getHeader()->cd=dc->d_mdp.d_header.cd;
 
-    // DO NOT MOVE THIS CODE UP - DNSPacketWriter needs to get the original-cased version
-    if (g_lowercaseOutgoing)
-      dc->d_mdp.d_qname = DNSName(toLower(dc->d_mdp.d_qname.toString()));
-
     uint32_t minTTL=std::numeric_limits<uint32_t>::max();
 
     SyncRes sr(dc->d_now);
index 653c17682ba2282c11fd38b68bd581447910a4e9..88e04f646e26480c0373a6fe6078593819427534 100644 (file)
@@ -374,7 +374,11 @@ int SyncRes::asyncresolveWrapper(const ComboAddress& ip, bool ednsMANDATORY, con
     else if(ednsMANDATORY || mode==EDNSStatus::UNKNOWN || mode==EDNSStatus::EDNSOK || mode==EDNSStatus::EDNSIGNORANT)
       EDNSLevel = 1;
     
-    ret=asyncresolve(ip, domain, type, doTCP, sendRDQuery, EDNSLevel, now, srcmask, ctx, luaconfsLocal->outgoingProtobufServer, res);
+    DNSName sendQname(domain);
+    if (g_lowercaseOutgoing)
+      sendQname = sendQname.makeLowerCase();
+
+    ret=asyncresolve(ip, sendQname, type, doTCP, sendRDQuery, EDNSLevel, now, srcmask, ctx, luaconfsLocal->outgoingProtobufServer, res);
     if(ret < 0) {
       return ret; // transport error, nothing to learn here
     }
index 26b2a9cccd2dcaa446205e119b4989b28f92961a..31547479340c2ab285d5711807d94c216d04172d 100644 (file)
@@ -744,6 +744,7 @@ extern __thread struct timeval g_now;
 
 extern NetmaskGroup g_ednssubnets;
 extern SuffixMatchNode g_ednsdomains;
+extern bool g_lowercaseOutgoing;
 
 #ifdef HAVE_PROTOBUF
 extern __thread boost::uuids::random_generator* t_uuidGenerator;