]> granicus.if.org Git - pdns/commitdiff
deduplicate UDP answer counting
authorPeter van Dijk <peter.van.dijk@netherlabs.nl>
Thu, 8 Aug 2013 12:15:54 +0000 (14:15 +0200)
committerPeter van Dijk <peter.van.dijk@netherlabs.nl>
Thu, 8 Aug 2013 14:36:40 +0000 (16:36 +0200)
pdns/common_startup.cc
pdns/nameserver.cc

index 66cece57a262eb7e18124d89e9ee230d602b5981..170dbb1b678a3a79244a7e307ac2cffeb02e3dab 100644 (file)
@@ -208,20 +208,10 @@ int isGuarded(char **argv)
 
 void sendout(const DNSDistributor::AnswerData &AD)
 {
-  static unsigned int &numanswered=*S.getPointer("udp-answers");
-  static unsigned int &numanswered4=*S.getPointer("udp4-answers");
-  static unsigned int &numanswered6=*S.getPointer("udp6-answers");
-
   if(!AD.A)
     return;
   
   N->send(AD.A);
-  numanswered++;
-
-  if(AD.A->d_remote.getSocklen()==sizeof(sockaddr_in))
-    numanswered4++;
-  else
-    numanswered6++;
 
   int diff=AD.A->d_dt.udiff();
   avg_latency=(int)(1023*avg_latency/1024+diff/1024);
@@ -239,13 +229,10 @@ void *qthread(void *number)
 
   unsigned int &numreceived=*S.getPointer("udp-queries");
   unsigned int &numreceiveddo=*S.getPointer("udp-do-queries");
-  unsigned int &numanswered=*S.getPointer("udp-answers");
 
   unsigned int &numreceived4=*S.getPointer("udp4-queries");
-  unsigned int &numanswered4=*S.getPointer("udp4-answers");
 
   unsigned int &numreceived6=*S.getPointer("udp6-queries");
-  unsigned int &numanswered6=*S.getPointer("udp6-answers");
 
   int diff;
   bool logDNSQueries = ::arg().mustDo("log-dns-queries");
@@ -309,12 +296,6 @@ void *qthread(void *number)
       diff=P->d_dt.udiff();                                                    
       avg_latency=(int)(0.999*avg_latency+0.001*diff); // 'EWMA'
       
-      numanswered++;
-      if(P->d_remote.sin4.sin_family==AF_INET)
-        numanswered4++;
-      else
-        numanswered6++;
-
       continue;
     }
     
index e7d32a27b9a4396770f6b24ad4ab8c75d77a6336..db996aec386184ba514f7a1d9a63b13d329e26bf 100644 (file)
@@ -242,8 +242,11 @@ ResponseStats g_rs;
 void UDPNameserver::send(DNSPacket *p)
 {
   const string& buffer=p->getString();
-  
-  g_rs.submitResponse(p->qtype.getCode(), buffer.length(), true);
+  static unsigned int &numanswered=*S.getPointer("udp-answers");
+  static unsigned int &numanswered4=*S.getPointer("udp4-answers");
+  static unsigned int &numanswered6=*S.getPointer("udp6-answers");
+
+    g_rs.submitResponse(p->qtype.getCode(), buffer.length(), true);
 
   struct msghdr msgh;
   struct cmsghdr *cmsg;
@@ -259,6 +262,13 @@ void UDPNameserver::send(DNSPacket *p)
     S.ringAccount("remotes-unauth",p->getRemote());
   }
 
+  /* Count responses (total/v4/v6) and byte counts */
+  numanswered++;
+  if(p->d_remote.sin4.sin_family==AF_INET)
+    numanswered4++;
+  else
+    numanswered6++;
+
   /* Set up iov and msgh structures. */
   memset(&msgh, 0, sizeof(struct msghdr));
   iov.iov_base = (void*)buffer.c_str();