2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 22:15:20 +00:00

Exempt prefetches from the fetches-per-server quota

Give prefetches a free pass through the quota so that the cache
entries for popular zones could be updated successfully even if the
quota for is already reached.

(cherry picked from commit c7e8b7cf63)
This commit is contained in:
Aram Sargsyan
2024-06-07 16:24:00 +00:00
committed by Arаm Sаrgsyаn
parent d96fca478a
commit c90aa16929
3 changed files with 17 additions and 2 deletions

View File

@@ -1481,7 +1481,9 @@ copy_namehook_lists(dns_adb_t *adb, dns_adbfind_t *find, dns_adbname_t *name) {
dns_adbaddrinfo_t *addrinfo = NULL;
entry = namehook->entry;
if (adbentry_overquota(entry)) {
if ((find->options & DNS_ADBFIND_QUOTAEXEMPT) == 0 &&
adbentry_overquota(entry))
{
find->options |= DNS_ADBFIND_OVERQUOTA;
goto nextv4;
}
@@ -1503,7 +1505,9 @@ copy_namehook_lists(dns_adb_t *adb, dns_adbfind_t *find, dns_adbname_t *name) {
dns_adbaddrinfo_t *addrinfo = NULL;
entry = namehook->entry;
if (adbentry_overquota(entry)) {
if ((find->options & DNS_ADBFIND_QUOTAEXEMPT) == 0 &&
adbentry_overquota(entry))
{
find->options |= DNS_ADBFIND_OVERQUOTA;
goto nextv6;
}

View File

@@ -179,6 +179,10 @@ struct dns_adbfind {
* This is useful for reestablishing glue that has expired.
*/
#define DNS_ADBFIND_STARTATZONE 0x00000020
/*%
* Fetches will be exempted from the quota.
*/
#define DNS_ADBFIND_QUOTAEXEMPT 0x00000040
/*%
* The server's fetch quota is exceeded; it will be treated as
* lame for this query.

View File

@@ -3263,6 +3263,13 @@ findname(fetchctx_t *fctx, const dns_name_t *name, in_port_t port,
options |= DNS_ADBFIND_STARTATZONE;
}
/*
* Exempt prefetches from ADB quota.
*/
if ((fctx->options & DNS_FETCHOPT_PREFETCH) != 0) {
options |= DNS_ADBFIND_QUOTAEXEMPT;
}
/*
* See what we know about this address.
*/