Show
Ignore:
Timestamp:
03/21/06 22:39:36 (7 years ago)
Author:
ahu
Message:

add sizing of UDP receive buffers, plus fix (somewhat) the latency
measurements

Files:
1 modified

Legend:

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

    r608 r609  
    179179} 
    180180 
     181void setReceiveBuffer(int fd, uint32_t size) 
     182{ 
     183  uint32_t psize; 
     184  socklen_t len; 
     185  getsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char*)&psize, &len); 
     186  if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char*)&size, sizeof(size)) < 0 ) 
     187    L<<Logger::Error<<"Warning: unable to raise socket buffer size to "<<size<<": "<<strerror(errno)<<"\n"; 
     188} 
     189 
     190 
    181191static void writePid(void) 
    182192{ 
     
    345355 
    346356    uint64_t newLat=(uint64_t)(spent*1000000); 
    347     g_stats.avgLatencyUsec=0.01*g_stats.avgLatencyUsec + (1-0.01)*newLat; 
     357    g_stats.avgLatencyUsec=(1-0.0001)*g_stats.avgLatencyUsec + 0.0001*newLat; 
    348358    delete dc; 
    349359  } 
     
    371381  if(d_clientsock<0)  
    372382    throw AhuException("Making a socket for resolver: "+stringerror()); 
    373    
     383  setReceiveBuffer(d_clientsock, 250000);   
    374384  struct sockaddr_in sin; 
    375385  memset((char *)&sin,0, sizeof(sin)); 
     
    393403 
    394404  Utility::setNonBlocking(d_clientsock); 
     405 
    395406  L<<Logger::Error<<"Sending UDP queries from "<<inet_ntoa(sin.sin_addr)<<":"<< ntohs(sin.sin_port)  <<endl; 
    396407} 
     
    450461    if(fd<0)  
    451462      throw AhuException("Making a server socket for resolver: "+stringerror()); 
    452    
     463    setReceiveBuffer(fd, 250000); 
    453464    struct sockaddr_in sin; 
    454465    memset((char *)&sin,0, sizeof(sin));