mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-30 05:57:52 +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);
|
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
|
void
|
||||||
dns_cache_setcachesize(dns_cache_t *cache, size_t size) {
|
dns_cache_setcachesize(dns_cache_t *cache, size_t size) {
|
||||||
REQUIRE(VALID_CACHE(cache));
|
REQUIRE(VALID_CACHE(cache));
|
||||||
@ -254,6 +261,14 @@ dns_cache_setcachesize(dns_cache_t *cache, size_t size) {
|
|||||||
LOCK(&cache->lock);
|
LOCK(&cache->lock);
|
||||||
cache->size = size;
|
cache->size = size;
|
||||||
UNLOCK(&cache->lock);
|
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
|
size_t
|
||||||
|
Loading…
x
Reference in New Issue
Block a user