Fix the resolvers RTT-ranged responses statistics counters

When a response times out the fctx_cancelquery() function
incorrectly calculates it in the 'dns_resstatscounter_queryrtt5'
counter (i.e. >=1600 ms). To avoid this, the rctx_timedout()
function should make sure that 'rctx->finish' is NULL. And in order
to adjust the RTT values for the timed out server, 'rctx->no_response'
should be true. Update the rctx_timedout() function to make those
changes.

(cherry picked from commit 830e548111)
This commit is contained in:
Aram Sargsyan 2025-03-06 14:28:48 +00:00
parent 2a4bbf1d2e
commit afef69cab0

View file

@ -7943,6 +7943,9 @@ rctx_timedout(respctx_t *rctx) {
fctx->timeout = true;
fctx->timeouts++;
rctx->no_response = true;
rctx->finish = NULL;
now = isc_time_now();
/* netmgr timeouts are accurate to the millisecond */
if (isc_time_microdiff(&fctx->expires, &now) < US_PER_MS) {
@ -7953,8 +7956,6 @@ rctx_timedout(respctx_t *rctx) {
} else {
FCTXTRACE("query timed out; trying next server");
/* try next server */
rctx->no_response = true;
rctx->finish = NULL;
rctx->next_server = true;
}