]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix the resolvers RTT-ranged responses statistics counters
authorAram Sargsyan <aram@isc.org>
Thu, 6 Mar 2025 14:28:48 +0000 (14:28 +0000)
committerArаm Sаrgsyаn <aram@isc.org>
Tue, 18 Mar 2025 16:20:59 +0000 (16:20 +0000)
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.

lib/dns/resolver.c

index a470f27a7097683c41a29ab348edf3634f6e9f29..504fc0254fc34ddb2af8f55d41c9aaa500616086 100644 (file)
@@ -8049,6 +8049,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) {
@@ -8059,8 +8062,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;
                }