is a persistent overlimit condition.
858. [func] isc_mem_setwater() no longer requires that when the
callback function is non-NULL then its hi_water
argument must be greater than its lo_water argument
(they can now be equal) or that they be non-zero.
857. [cleanup] Use ISC_MAGIC() to define all magic numbers for
structs, for our friends in EBCDIC-land.
wait at least six seconds between each pass of the tree. This keeps
the CPU from being bogged down in a persistent overlimit condition, and
because it uses timers also lets the cache cleaner know right away when
the server is being shut down, so it can stop trying to clean.
Also fixed an unlocked access to cache->live_tasks in dns_cache_detach().
Also fixed a problem with repeated calls to dns_cache_setcachesize() setting
the database as not overmem, even though it might have still been in
the process of cleaning from a previous limit. Just set the new
isc_mem_setwater() limits instead and let the mem.c call water() if cleaning
needs to be either started or stopped because of the new limits.
Minor code cleanups.
is not null then hi_water must exceed lo_water and both must be > 0.
Now requires hi_water >= lo_water, and they can both be 0. Not allowing
them to be equal was just an unnecessary restriction, and letting them be 0
is useful for the case where the context has had non-zero values set, went
over hi_water and called the callback, and then wanted to remove limits
(perhaps because of a reconfiguration). This allows the callback to
be signaled as ISC_MEM_LOWATER on the next isc_mem_put(), which the caller
might need to terminate any outstanding action that was triggered by
the hi_water.
removes no longer configured listeners into the block that actually
updates/add listeners, because when ns_controls_configure() recursively
calls itself to configure a 127.1 channel if there is no controls() statement,
the top level ns_controls_configure() was shutting down the channel that
the enclosing ns_controls_configure() just created.