]> granicus.if.org Git - pdns/commitdiff
ignore non-query packets, closing #945
authorPeter van Dijk <peter.van.dijk@netherlabs.nl>
Wed, 14 Aug 2013 09:05:22 +0000 (11:05 +0200)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Wed, 14 Aug 2013 09:14:07 +0000 (11:14 +0200)
pdns/pdns_recursor.cc

index 8d47af81b0ef910f28c00b5a0419e74b9168188e..f48900486680691018fe0b8dbaf801a2c5fcbf11 100644 (file)
@@ -786,6 +786,11 @@ void handleRunningTCPQuestion(int fd, FDMultiplexer::funcparam_t& var)
         L<<Logger::Error<<"Ignoring answer on server socket!"<<endl;
         return;
       }
+      if(dc->d_mdp.d_header.opcode) {
+        delete dc;
+        L<<Logger::Error<<"Ignoring non-query opcode on server socket!"<<endl;
+        return;
+      }
       else {
         ++g_stats.qcounter;
         ++g_stats.tcpqcounter;
@@ -906,6 +911,10 @@ void handleNewUDPQuestion(int fd, FDMultiplexer::funcparam_t& var)
         if(g_logCommonErrors)
           L<<Logger::Error<<"Ignoring answer from "<<fromaddr.toString()<<" on server socket!"<<endl;
       }
+      else if(dh->opcode) {
+        if(g_logCommonErrors)
+          L<<Logger::Error<<"Ignoring non-query opcode "<<dh->opcode<<" from "<<fromaddr.toString()<<" on server socket!"<<endl;
+      }
       else {
        string question(data, len);
        if(g_weDistributeQueries)