};
+struct pdns_timeval
+{
+ uint32_t tv_sec;
+ uint32_t tv_usec;
+};
+
struct pdns_pcap_pkthdr {
- struct timeval ts; /* time stamp */
+ struct pdns_timeval ts; /* time stamp */
uint32_t caplen; /* length of portion present */
uint32_t len; /* length this packet (off wire) */
};
gettimeofday(&now, 0);
for(qids_t::iterator i=qids.begin(); i!=qids.end(); ) {
- if(DiffTime(i->d_resentTime, now) < 60)
+ if(DiffTime(i->d_resentTime, now) < 10)
++i;
else {
s_idmanager.releaseID(i->d_assignedID);
cerr<<(datafmt % "Orig" % s_questions % origWaitingFor % s_orignever % s_origanswers % 0 % s_origtimedout % 0 % 0);
cerr<<(datafmt % "Refer." % s_questions % weWaitingFor % s_wenever % s_weanswers % 0 % s_wetimedout % 0 % 0);
-
-
cerr<<weWaitingFor<<" queries that could still come in on time, "<<qids.size()<<" outstanding"<<endl;
cerr<<"we late: "<<s_wetimedout<<", orig late: "<< s_origtimedout<<", "<<s_questions<<" questions sent, "<<s_origanswers
s_norecursionavailable++;
qd.d_norecursionavailable=true;
}
- qids.replace(i,qd);
+ qids.replace(i, qd);
if(qd.d_newRcode!=-1) {
// cout<<"Removing entry "<<qi<<", is done [in main loop]"<<endl;
p.add("target-ip", 1);
p.add("target-port", 1);
-
po::store(po::command_line_parser(argc, argv).options(alloptions).positional(p).run(), g_vm);
po::notify(g_vm);
-
reportAllTypes();
if (g_vm.count("help")) {
if(!((once++)%100))
houseKeeping();
- while(pr.d_pheader.ts < mental_time) {
+ struct timeval packet_ts;
+ packet_ts.tv_sec = 0;
+ packet_ts.tv_usec = 0;
+ while(packet_ts < mental_time) {
if(!pr.getUDPPacket())
goto out;
+ packet_ts.tv_sec = pr.d_pheader.ts.tv_sec;
+ packet_ts.tv_usec = pr.d_pheader.ts.tv_usec;
+
if(sendPacketFromPR(pr, remote))
count++;
}
-
if(packetLimit && count > packetLimit)
break;
- mental_time=pr.d_pheader.ts;
+ mental_time=packet_ts;
struct timeval then, now;
gettimeofday(&then,0);