From afef69cab04cfe355f543edf4da9543e041e77a2 Mon Sep 17 00:00:00 2001 From: Aram Sargsyan Date: Thu, 6 Mar 2025 14:28:48 +0000 Subject: [PATCH] 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 830e54811168bc3e69db93baf6132c18f3452f92) --- lib/dns/resolver.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index fe594a2b96..d9c141f153 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -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; }