Changeset 1634

Show
Ignore:
Timestamp:
06/13/10 14:46:34 (3 years ago)
Author:
ahu
Message:

add timeout reporting to inflighter

Location:
trunk/pdns/pdns
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/pdns/pdns/dnsbulktest.cc

    r1633 r1634  
    11#include "inflighter.cc" 
     2#include <deque> 
    23#include "namespaces.hh" 
    34#include "dnsparser.hh" 
     
    2122  typedef DNSResult Answer; // ip  
    2223  int d_socket; 
    23   uint16_t d_id; 
     24  deque<uint16_t> d_idqueue; 
    2425   
    2526   
     
    3435    d_oks = d_errors = d_nodatas = d_nxdomains = d_unknowns = 0; 
    3536    d_receiveds = d_receiveerrors = 0; 
     37    for(unsigned int id =0 ; id < numeric_limits<uint16_t>::max(); ++id)  
     38      d_idqueue.push_back(id); 
    3639  } 
    3740   
     
    5053    DNSPacketWriter pw(packet, domain, QType::A); 
    5154     
    52     pw.getHeader()->id = d_id++; 
     55    pw.getHeader()->id = d_idqueue.front(); 
     56    d_idqueue.pop_front(); 
    5357    pw.getHeader()->rd = 1; 
    5458    pw.getHeader()->qr = 0; 
     
    9498    } 
    9599    return 0; 
     100  } 
     101   
     102  void deliverTimeout(const Identifier& id) 
     103  { 
     104    d_idqueue.push_back(id); 
    96105  } 
    97106   
  • trunk/pdns/pdns/inflighter.cc

    r1632 r1634  
    130130        for(typename waiters_by_ttd_index_t::iterator valiter = waiters_index.begin(); valiter != waiters_index.end(); ) { 
    131131          if(valiter->ttd.tv_sec < now.tv_sec || (valiter->ttd.tv_sec == now.tv_sec && valiter->ttd.tv_usec < now.tv_usec)) { 
     132            d_sr.deliverTimeout(valiter->id);  // so backend can release id 
    132133            waiters_index.erase(valiter++); 
    133134            // cerr<<"Have timeout for id="<< valiter->id <<endl;