string reply;
if(!g_onlyTCP) {
- Socket udpsock(InterNetwork, Datagram);
+ Socket udpsock((AddressFamily)dest.sin4.sin_family, Datagram);
udpsock.sendTo(string((char*)&*packet.begin(), (char*)&*packet.end()), dest);
ComboAddress origin;
g_truncates++;
}
- Socket sock(InterNetwork, Stream);
+ Socket sock((AddressFamily)dest.sin4.sin_family, Stream);
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 a worker reaches the end of its queue, it stops */
AtomicCounter g_pos;
+
struct Query
{
Query(const std::string& qname_, uint16_t qtype_) : qname(qname_), qtype(qtype_) {}
vector<Query> g_queries;
ComboAddress g_dest;
-void* worker(void*)
+static void* worker(void*)
{
Query q;
for(;;) {
\r
# echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle \r
\r
+The equivalent for IPv6 is not known.\r
+\r
OPTIONS
-------
--help::\r
Provide a helpful message\r
\r
+Remote IP address can be IPv4 or IPv6. Remote port defaults to 53.\r
+\r
BUGS
----
Currently the timeout code does not actually perform non-blocking connects\r
or writes. So a slow connect or slow writes will still cause low\r
performance and delays. \r
\r
-Does not yet support IPv6 testing.\r
-
AUTHOR
------
Written by PowerDNS.COM BV, bert hubert, <bert.hubert@netherlabs.nl>