]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Raise max-clients-per-query to be at least
authorMatthijs Mekking <matthijs@isc.org>
Thu, 13 Mar 2025 08:28:37 +0000 (09:28 +0100)
committerMatthijs Mekking <matthijs@isc.org>
Thu, 13 Mar 2025 13:02:28 +0000 (13:02 +0000)
In the case where 'clients-per-query' is larger than
'max-clients-per-query', raise 'max-clients-per-query' so that
'clients-per-query' equals 'max-clients-per-query' and log a warning
that this is what happened.

bin/named/server.c

index 2ddc529bd442637f6642bac71a4b69db2e9c7ac9..bffe2333f3d7f424399b45beb0664eb2ae44c1f4 100644 (file)
@@ -3762,7 +3762,7 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
        uint32_t maxbits;
        unsigned int resopts = 0;
        dns_zone_t *zone = NULL;
-       uint32_t max_clients_per_query;
+       uint32_t clients_per_query, max_clients_per_query;
        bool empty_zones_enable;
        const cfg_obj_t *disablelist = NULL;
        isc_stats_t *resstats = NULL;
@@ -5169,14 +5169,25 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewlist, cfg_obj_t *config,
        view->v6bias = cfg_obj_asuint32(obj) * 1000;
 
        obj = NULL;
-       result = named_config_get(maps, "max-clients-per-query", &obj);
+       result = named_config_get(maps, "clients-per-query", &obj);
        INSIST(result == ISC_R_SUCCESS);
-       max_clients_per_query = cfg_obj_asuint32(obj);
+       clients_per_query = cfg_obj_asuint32(obj);
 
        obj = NULL;
-       result = named_config_get(maps, "clients-per-query", &obj);
+       result = named_config_get(maps, "max-clients-per-query", &obj);
        INSIST(result == ISC_R_SUCCESS);
-       dns_resolver_setclientsperquery(view->resolver, cfg_obj_asuint32(obj),
+       max_clients_per_query = cfg_obj_asuint32(obj);
+
+       if (max_clients_per_query < clients_per_query) {
+               cfg_obj_log(obj, ISC_LOG_WARNING,
+                           "configured clients-per-query (%u) exceeds "
+                           "max-clients-per-query (%u); automatically "
+                           "adjusting max-clients-per-query to (%u)",
+                           clients_per_query, max_clients_per_query,
+                           clients_per_query);
+               max_clients_per_query = clients_per_query;
+       }
+       dns_resolver_setclientsperquery(view->resolver, clients_per_query,
                                        max_clients_per_query);
 
        /*