bool logDNSQueries = ::arg().mustDo("log-dns-queries");
shared_ptr<UDPNameserver> NS;
std::string buffer;
+ ComboAddress accountremote;
// If we have SO_REUSEPORT then create a new port for all receiver threads
// other than the first one.
numreceived++;
- if(question.d_remote.getSocklen()==sizeof(sockaddr_in))
+ accountremote = question.d_remote;
+ if (question.d_inner_remote)
+ accountremote = *question.d_inner_remote;
+
+ if (accountremote.sin4.sin_family == AF_INET)
numreceived4++;
else
numreceived6++;
if(logDNSQueries)
g_log<<": packetcache HIT"<<endl;
cached.setRemote(&question.d_remote); // inlined
+ cached.d_inner_remote = question.d_inner_remote;
cached.setSocket(question.getSocket()); // inlined
cached.d_anyLocal = question.d_anyLocal;
cached.setMaxReplyLen(question.getMaxReplyLen());
{
setThreadName("pdns/tcpConnect");
std::unique_ptr<DNSPacket> packet;
- ComboAddress remote;
+ ComboAddress remote, accountremote;
socklen_t remotelen=sizeof(remote);
size_t transactions = 0;
time_t start = 0;
}
inner_remote = psource;
inner_tcp = tcp;
+ accountremote = psource;
+ }
+ else {
+ accountremote = remote;
}
for(;;) {
}
getQuestion(fd, mesg.get(), pktlen, remote, remainingTime);
- S.inc("tcp-queries");
- if(remote.sin4.sin_family == AF_INET6)
+ S.inc("tcp-queries");
+ if (accountremote.sin4.sin_family == AF_INET6)
S.inc("tcp6-queries");
else
S.inc("tcp4-queries");
if(logDNSQueries)
g_log<<": packetcache HIT"<<endl;
cached->setRemote(&packet->d_remote);
+ cached->d_inner_remote = packet->d_inner_remote;
cached->d.id=packet->d.id;
cached->d.rd=packet->d.rd; // copy in recursion desired bit
cached->commitD(); // commit d to the packet inlined