The req_response() function is using 'udpcount' variable to resend
the request 'udpcount' times on timeout even for TCP requests,
which does not make sense, as it would use the same connection.
Add a condition to use the resend logic only for UDP requests.
(cherry picked from commit
edcdb881da9aefaaadb9b6e4de2ff372ed395ab0)
if (result == ISC_R_TIMEDOUT) {
LOCK(&request->requestmgr->locks[request->hash]);
- if (request->udpcount > 1) {
+ if (request->udpcount > 1 &&
+ (request->flags & DNS_REQUEST_F_TCP) == 0)
+ {
request->udpcount -= 1;
dns_dispatch_resume(request->dispentry,
request->timeout);