MINOR: compression: memlevel and windowsize
The window size and the memlevel of the zlib are now configurable using
global options tune.zlib.memlevel and tune.zlib.windowsize.
It affects the memory consumption of the zlib.
diff --git a/src/cfgparse.c b/src/cfgparse.c
index d1f18f7..2b45122 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -662,6 +662,50 @@
}
global.tune.max_http_hdr = atol(args[1]);
}
+ else if (!strcmp(args[0], "tune.zlib.memlevel")) {
+#ifdef USE_ZLIB
+ if (*args[1]) {
+ global.tune.zlibmemlevel = atoi(args[1]);
+ if (global.tune.zlibmemlevel < 1 || global.tune.zlibmemlevel > 9) {
+ Alert("parsing [%s:%d] : '%s' expects a numeric value between 1 and 9\n",
+ file, linenum, args[0]);
+ err_code |= ERR_ALERT | ERR_FATAL;
+ goto out;
+ }
+ } else {
+ Alert("parsing [%s:%d] : '%s' expects a numeric value between 1 and 9\n",
+ file, linenum, args[0]);
+ err_code |= ERR_ALERT | ERR_FATAL;
+ goto out;
+ }
+#else
+ Alert("parsing [%s:%d] : '%s' is not implemented.\n", file, linenum, args[0]);
+ err_code |= ERR_ALERT | ERR_FATAL;
+ goto out;
+#endif
+ }
+ else if (!strcmp(args[0], "tune.zlib.windowsize")) {
+#ifdef USE_ZLIB
+ if (*args[1]) {
+ global.tune.zlibwindowsize = atoi(args[1]);
+ if (global.tune.zlibwindowsize < 8 || global.tune.zlibwindowsize > 15) {
+ Alert("parsing [%s:%d] : '%s' expects a numeric value between 8 and 15\n",
+ file, linenum, args[0]);
+ err_code |= ERR_ALERT | ERR_FATAL;
+ goto out;
+ }
+ } else {
+ Alert("parsing [%s:%d] : '%s' expects a numeric value between 8 and 15\n",
+ file, linenum, args[0]);
+ err_code |= ERR_ALERT | ERR_FATAL;
+ goto out;
+ }
+#else
+ Alert("parsing [%s:%d] : '%s' is not implemented.\n", file, linenum, args[0]);
+ err_code |= ERR_ALERT | ERR_FATAL;
+ goto out;
+#endif
+ }
else if (!strcmp(args[0], "uid")) {
if (global.uid != 0) {
Alert("parsing [%s:%d] : user/uid already specified. Continuing.\n", file, linenum);
diff --git a/src/compression.c b/src/compression.c
index 1f12df9..c20a449 100644
--- a/src/compression.c
+++ b/src/compression.c
@@ -329,7 +329,7 @@
strm->zfree = Z_NULL;
strm->opaque = Z_NULL;
- if (deflateInit2(&comp_ctx->strm, level, Z_DEFLATED, MAX_WBITS + 16, 8, Z_DEFAULT_STRATEGY) != Z_OK)
+ if (deflateInit2(&comp_ctx->strm, level, Z_DEFLATED, global.tune.zlibwindowsize + 16, global.tune.zlibmemlevel, Z_DEFAULT_STRATEGY) != Z_OK)
return -1;
return 0;
diff --git a/src/haproxy.c b/src/haproxy.c
index c6933c3..d85a46a 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -126,6 +126,12 @@
#ifdef USE_OPENSSL
.sslcachesize = 20000,
#endif
+#ifdef USE_ZLIB
+ .zlibmemlevel = 8,
+ .zlibwindowsize = MAX_WBITS,
+#endif
+
+
},
#ifdef USE_OPENSSL
#ifdef DEFAULT_MAXSSLCONN