mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-08 21:32:11 -04:00
3352. [bug] Ensure that learned server attributes timeout of the
adb cache. [RT #29856]
This commit is contained in:
parent
afb6118492
commit
ee2f98d5cf
2 changed files with 17 additions and 5 deletions
3
CHANGES
3
CHANGES
|
|
@ -1,3 +1,6 @@
|
|||
3352. [bug] Ensure that learned server attributes timeout of the
|
||||
adb cache. [RT #29856]
|
||||
|
||||
3351. [bug] isc_mem_put and isc_mem_putanddetach didn't report
|
||||
caller if either ISC_MEM_DEBUGSIZE or ISC_MEM_DEBUGCTX
|
||||
memory debugging flags are set. [RT #30243]
|
||||
|
|
|
|||
|
|
@ -3939,8 +3939,10 @@ dns_adb_adjustsrtt(dns_adb_t *adb, dns_adbaddrinfo_t *addr,
|
|||
addr->entry->srtt = new_srtt;
|
||||
addr->srtt = new_srtt;
|
||||
|
||||
isc_stdtime_get(&now);
|
||||
addr->entry->expires = now + ADB_ENTRY_WINDOW;
|
||||
if (addr->entry->expires == 0) {
|
||||
isc_stdtime_get(&now);
|
||||
addr->entry->expires = now + ADB_ENTRY_WINDOW;
|
||||
}
|
||||
|
||||
UNLOCK(&adb->entrylocks[bucket]);
|
||||
}
|
||||
|
|
@ -3950,6 +3952,7 @@ dns_adb_changeflags(dns_adb_t *adb, dns_adbaddrinfo_t *addr,
|
|||
unsigned int bits, unsigned int mask)
|
||||
{
|
||||
int bucket;
|
||||
isc_stdtime_t now;
|
||||
|
||||
REQUIRE(DNS_ADB_VALID(adb));
|
||||
REQUIRE(DNS_ADBADDRINFO_VALID(addr));
|
||||
|
|
@ -3958,6 +3961,11 @@ dns_adb_changeflags(dns_adb_t *adb, dns_adbaddrinfo_t *addr,
|
|||
LOCK(&adb->entrylocks[bucket]);
|
||||
|
||||
addr->entry->flags = (addr->entry->flags & ~mask) | (bits & mask);
|
||||
if (addr->entry->expires == 0) {
|
||||
isc_stdtime_get(&now);
|
||||
addr->entry->expires = now + ADB_ENTRY_WINDOW;
|
||||
}
|
||||
|
||||
/*
|
||||
* Note that we do not update the other bits in addr->flags with
|
||||
* the most recent values from addr->entry->flags.
|
||||
|
|
@ -4036,15 +4044,16 @@ dns_adb_freeaddrinfo(dns_adb_t *adb, dns_adbaddrinfo_t **addrp) {
|
|||
entry = addr->entry;
|
||||
REQUIRE(DNS_ADBENTRY_VALID(entry));
|
||||
|
||||
isc_stdtime_get(&now);
|
||||
|
||||
*addrp = NULL;
|
||||
overmem = isc_mem_isovermem(adb->mctx);
|
||||
|
||||
bucket = addr->entry->lock_bucket;
|
||||
LOCK(&adb->entrylocks[bucket]);
|
||||
|
||||
entry->expires = now + ADB_ENTRY_WINDOW;
|
||||
if (entry->expires == 0) {
|
||||
isc_stdtime_get(&now);
|
||||
entry->expires = now + ADB_ENTRY_WINDOW;
|
||||
}
|
||||
|
||||
want_check_exit = dec_entry_refcnt(adb, overmem, entry, ISC_FALSE);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue