From: bert hubert Date: Tue, 11 Jun 2013 22:06:10 +0000 (+0200) Subject: add TCP_NODELAY option X-Git-Tag: rec-3.6.0-rc1~673 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a8f90a6a1eba92a4836d3fe1b6ac4638748c3fdf;p=thirdparty%2Fpdns.git add TCP_NODELAY option --- diff --git a/pdns/dnstcpbench.cc b/pdns/dnstcpbench.cc index d61a9a204d..7b0e566758 100644 --- a/pdns/dnstcpbench.cc +++ b/pdns/dnstcpbench.cc @@ -4,6 +4,7 @@ #include "dnswriter.hh" #include "dnsrecords.hh" #include "statbag.hh" +#include #include #include @@ -12,6 +13,7 @@ namespace po = boost::program_options; po::variables_map g_vm; bool g_verbose; bool g_onlyTCP; +bool g_tcpNoDelay; unsigned int g_timeoutMsec; AtomicCounter g_networkErrors, g_otherErrors, g_OK, g_truncates, g_authAnswers, g_timeOuts; @@ -49,6 +51,9 @@ try int tmp=1; if(setsockopt(sock.getHandle(),SOL_SOCKET,SO_REUSEADDR,(char*)&tmp,sizeof tmp)<0) throw runtime_error("Unable to set socket reuse: "+string(strerror(errno))); + + if(g_tcpNoDelay && setsockopt(sock.getHandle(), IPPROTO_TCP, TCP_NODELAY,(char*)&tmp,sizeof tmp)<0) + throw runtime_error("Unable to set socket no delay: "+string(strerror(errno))); sock.connect(dest); uint16_t len = htons(packet.size()); @@ -136,6 +141,7 @@ try ("help,h", "produce help message") ("verbose,v", "be verbose") ("udp-first,u", "try UDP first") + ("tcp-no-delay", po::value()->default_value(true), "use TCP_NODELAY socket option") ("timeout-msec", po::value()->default_value(10), "wait for this amount of milliseconds for an answer") ("workers", po::value()->default_value(100), "number of parallel workers"); @@ -155,6 +161,8 @@ try cout << desc<(); + g_onlyTCP = !g_vm.count("udp-first"); g_verbose = g_vm.count("verbose"); g_timeoutMsec = g_vm["timeout-msec"].as(); @@ -176,6 +184,7 @@ try cout<<"Sending queries to: "<