mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
restore isc_mem_setwater() call in the cache
Commit 4db150437e14b28c5b50ae466af9ce502fd73185 incorrectly removed the call to isc_mem_setwater() from dns_cache_setcachesize(). The water() function is a no-op, but we still need to set high- and low-water marks in the memory context, otherwise overmem conditions will not be detected.
This commit is contained in:
parent
d17d9de8a2
commit
b12f709f05
@ -239,6 +239,13 @@ dns_cache_getname(dns_cache_t *cache) {
|
||||
return (cache->name);
|
||||
}
|
||||
|
||||
/* This is a no-op, but has to exist for isc_mem_setwater(). */
|
||||
static void
|
||||
water(void *arg, int mark) {
|
||||
UNUSED(arg);
|
||||
UNUSED(mark);
|
||||
}
|
||||
|
||||
void
|
||||
dns_cache_setcachesize(dns_cache_t *cache, size_t size) {
|
||||
REQUIRE(VALID_CACHE(cache));
|
||||
@ -254,6 +261,14 @@ dns_cache_setcachesize(dns_cache_t *cache, size_t size) {
|
||||
LOCK(&cache->lock);
|
||||
cache->size = size;
|
||||
UNLOCK(&cache->lock);
|
||||
|
||||
size_t hi = size - (size >> 3); /* Approximately 7/8ths. */
|
||||
size_t lo = size - (size >> 2); /* Approximately 3/4ths. */
|
||||
if (size == 0U || hi == 0U || lo == 0U) {
|
||||
isc_mem_clearwater(cache->mctx);
|
||||
} else {
|
||||
isc_mem_setwater(cache->mctx, water, cache, hi, lo);
|
||||
}
|
||||
}
|
||||
|
||||
size_t
|
||||
|
Loading…
x
Reference in New Issue
Block a user