CLEANUP: compression: move the default setting of maxzlibmem to defaults

__comp_fetch_init() only presets the maxzlibmem, and only when both
USE_ZLIB and DEFAULT_MAXZLIBMEM are set. The intent is to preset a
default value to protect the system against excessive memory usage
when no setting is set by the user.

Nowadays the entry in the global struct is always there so there's no
point anymore in passing via a constructor to possibly set this value.
Let's go the cleaner way by always presetting DEFAULT_MAXZLIBMEM to 0
in defaults.h unless these conditions are met, and always assigning it
instead of pre-setting the entry to zero. This is more straightforward
and removes some ifdefs and the last constructor. In addition, now the
setting has a chance of being found.
This commit is contained in:
Willy Tarreau 2022-04-25 19:29:10 +02:00
parent ebab60279e
commit 197715ae21
3 changed files with 10 additions and 9 deletions

View File

@ -390,6 +390,15 @@
#define HAPROXY_MEMMAX 0
#endif
/* For USE_ZLIB, DEFAULT_MAXZLIBMEM may be set to a hard-coded value that will
* preset a maxzlibmem value. Just leave it to zero for other configurations.
* Note that it's expressed in megabytes.
*/
#if !defined(DEFAULT_MAXZLIBMEM) || !defined(USE_ZLIB)
#undef DEFAULT_MAXZLIBMEM
#define DEFAULT_MAXZLIBMEM 0
#endif
/* Pools are always enabled unless explicitly disabled. When disabled, the
* calls are directly passed to the underlying OS functions.
*/

View File

@ -713,14 +713,6 @@ static struct cfg_kw_list cfg_kws = {ILH, {
INITCALL1(STG_REGISTER, cfg_register_keywords, &cfg_kws);
__attribute__((constructor))
static void __comp_fetch_init(void)
{
#if defined(USE_ZLIB) && defined(DEFAULT_MAXZLIBMEM)
global.maxzlibmem = DEFAULT_MAXZLIBMEM * 1024U * 1024U;
#endif
}
static void comp_register_build_opts(void)
{
char *ptr = NULL;

View File

@ -175,7 +175,7 @@ struct global global = {
.nbthread = 0,
.req_count = 0,
.logsrvs = LIST_HEAD_INIT(global.logsrvs),
.maxzlibmem = 0,
.maxzlibmem = DEFAULT_MAXZLIBMEM * 1024U * 1024U,
.comp_rate_lim = 0,
.ssl_server_verify = SSL_SERVER_VERIFY_REQUIRED,
.unix_bind = {