]> git.ipfire.org Git - thirdparty/pdns.git/blobdiff - pdns/dnstcpbench.cc
auth: switch circleci mssql image
[thirdparty/pdns.git] / pdns / dnstcpbench.cc
index e64f533eb02a0d5f75e9849c445584d4e43565fe..d69b6c6866c030de969fb679203031ca03d7598c 100644 (file)
@@ -34,6 +34,7 @@
 #include "dnswriter.hh"
 #include "dnsrecords.hh"
 #include "statbag.hh"
+#include "threadname.hh"
 #include <netinet/tcp.h>
 #include <boost/array.hpp>
 #include <boost/program_options.hpp>
@@ -61,7 +62,7 @@ unsigned int makeUsec(const struct timeval& tv)
 struct BenchQuery
 {
   BenchQuery(const std::string& qname_, uint16_t qtype_) : qname(qname_), qtype(qtype_), udpUsec(0), tcpUsec(0), answerSecond(0) {}
-  BenchQuery(){}
+  BenchQuery(): qtype(0), udpUsec(0), tcpUsec(0), answerSecond(0) {}
   DNSName qname;
   uint16_t qtype;
   uint32_t udpUsec, tcpUsec;
@@ -82,7 +83,7 @@ try
   if(!g_onlyTCP) {
     Socket udpsock(g_dest.sin4.sin_family, SOCK_DGRAM);
     
-    udpsock.sendTo(string((char*)&*packet.begin(), (char*)&*packet.end()), g_dest);
+    udpsock.sendTo(string(packet.begin(), packet.end()), g_dest);
     ComboAddress origin;
     res = waitForData(udpsock.getHandle(), 0, 1000 * g_timeoutMsec);
     if(res < 0)
@@ -98,7 +99,7 @@ try
     q->udpUsec = makeUsec(now - tv);
     tv=now;
 
-    MOADNSParser mdp(reply);
+    MOADNSParser mdp(false, reply);
     if(!mdp.d_header.tc)
       return;
     g_truncates++;
@@ -115,7 +116,7 @@ try
   sock.connect(g_dest);
   uint16_t len = htons(packet.size());
   string tcppacket((char*)& len, 2);
-  tcppacket.append((char*)&*packet.begin(), (char*)&*packet.end());
+  tcppacket.append(packet.begin(), packet.end());
 
   sock.writen(tcppacket);
 
@@ -148,7 +149,7 @@ try
   q->tcpUsec = makeUsec(now - tv);
   q->answerSecond = now.tv_sec;
 
-  MOADNSParser mdp(reply);
+  MOADNSParser mdp(false, reply);
   //  cout<<"Had correct TCP/IP response, "<<mdp.d_answers.size()<<" answers, aabit="<<mdp.d_header.aa<<endl;
   if(mdp.d_header.aa)
     g_authAnswers++;
@@ -174,6 +175,7 @@ vector<BenchQuery> g_queries;
 
 static void* worker(void*)
 {
+  setThreadName("dnstcpb/worker");
   for(;;) {
     unsigned int pos = g_pos++; 
     if(pos >= g_queries.size())
@@ -250,7 +252,7 @@ try
   }
 
 
-  pthread_t workers[numworkers];
+  std::vector<pthread_t> workers(numworkers);
 
   FILE* fp;
   if(!g_vm.count("file"))