]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: compression: the deflate algorithm must use global settings as well
authorWilly Tarreau <w@1wt.eu>
Sun, 28 Apr 2013 06:52:52 +0000 (08:52 +0200)
committerWilly Tarreau <w@1wt.eu>
Sun, 28 Apr 2013 07:01:11 +0000 (09:01 +0200)
Global compression settings (windowsize and memlevel) were only considered
for the gzip algorithm but not the deflate algorithm. Since a single allocator
is used for both algos, if gzip was first initialized the memory with parameters
smaller than default, then initializing deflate after with default settings
would result in overusing the small allocated areas.

To fix this, we make use of deflateInit2() for deflate_init() as well.

Thanks to Godbach for reporting this bug, introduced by in 1.5-dev13 by commit
8b52bb38. No backport is needed.

src/compression.c

index 906e4fdd751dce50d05fbb4a073e1233f1b87d9e..c8e914400d3c8a0a43809ae09cc59c3d963aa2b7 100644 (file)
@@ -513,7 +513,7 @@ int deflate_init(struct comp_ctx **comp_ctx, int level)
 
        strm = &(*comp_ctx)->strm;
 
-       if (deflateInit(strm, level) != Z_OK) {
+       if (deflateInit2(strm, level, Z_DEFLATED, global.tune.zlibwindowsize, global.tune.zlibmemlevel, Z_DEFAULT_STRATEGY) != Z_OK) {
                deinit_comp_ctx(comp_ctx);
                return -1;
        }