From: Willy Tarreau Date: Mon, 25 Apr 2022 17:29:10 +0000 (+0200) Subject: CLEANUP: compression: move the default setting of maxzlibmem to defaults X-Git-Tag: v2.6-dev8~77 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=197715ae2147eff0bfdb577612ce4a31d1aa65d3;p=thirdparty%2Fhaproxy.git 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. --- diff --git a/include/haproxy/defaults.h b/include/haproxy/defaults.h index d4721a7948..80b2e64313 100644 --- a/include/haproxy/defaults.h +++ b/include/haproxy/defaults.h @@ -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. */ diff --git a/src/compression.c b/src/compression.c index 8095ecb99f..3ce2a60057 100644 --- a/src/compression.c +++ b/src/compression.c @@ -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; diff --git a/src/haproxy.c b/src/haproxy.c index ddb23e2c8e..6fbe85bd3c 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -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 = {