From: Matthijs Mekking Date: Thu, 13 Mar 2025 08:28:37 +0000 (+0100) Subject: Raise max-clients-per-query to be at least X-Git-Tag: v9.21.7~58^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f6f9645ed14660225786bd1eeae2b8345ad38b6d;p=thirdparty%2Fbind9.git Raise max-clients-per-query to be at least 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. --- diff --git a/bin/named/server.c b/bin/named/server.c index 2ddc529bd44..bffe2333f3d 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -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); /*