diff options
| author | Sergey Kandaurov <pluknet@nginx.com> | 2024-12-23 17:57:45 +0400 |
|---|---|---|
| committer | pluknet <pluknet@nginx.com> | 2025-02-05 20:40:47 +0400 |
| commit | 9cda58178bf6d552829d20fedee1d4df564f5629 (patch) | |
| tree | 9f59e5297447b26c248b4b79ddd0eb607b83a583 /src | |
| parent | 977824010f0bb8e2b54963fd4532a6167e6a0ada (diff) | |
| download | nginx-9cda58178bf6d552829d20fedee1d4df564f5629.tar.gz nginx-9cda58178bf6d552829d20fedee1d4df564f5629.tar.bz2 | |
Gzip: compatibility with recent zlib-ng 2.2.x versions.
It now uses 5/4 times more memory for the pending buffer.
Further, a single allocation is now used, which takes additional 56 bytes
for deflate_allocs in 64-bit mode aligned to 16, to store sub-allocation
pointers, and the total allocation size now padded up to 128 bytes, which
takes theoretically 200 additional bytes in total. This fits though into
"4 * (64 + sizeof(void*))" additional space for ZALLOC used in zlib-ng
2.1.x versions. The comment was updated to reflect this.
Diffstat (limited to 'src')
| -rw-r--r-- | src/http/modules/ngx_http_gzip_filter_module.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/http/modules/ngx_http_gzip_filter_module.c b/src/http/modules/ngx_http_gzip_filter_module.c index b55527845..7113df695 100644 --- a/src/http/modules/ngx_http_gzip_filter_module.c +++ b/src/http/modules/ngx_http_gzip_filter_module.c @@ -516,8 +516,10 @@ ngx_http_gzip_filter_memory(ngx_http_request_t *r, ngx_http_gzip_ctx_t *ctx) /* * Another zlib variant, https://github.com/zlib-ng/zlib-ng. * It used to force window bits to 13 for fast compression level, - * uses (64 + sizeof(void*)) additional space on all allocations - * for alignment, 16-byte padding in one of window-sized buffers, + * used (64 + sizeof(void*)) additional space on all allocations + * for alignment and 16-byte padding in one of window-sized buffers, + * uses a single allocation with up to 200 bytes for alignment and + * internal pointers, 5/4 times more memory for the pending buffer, * and 128K hash. */ @@ -526,7 +528,7 @@ ngx_http_gzip_filter_memory(ngx_http_request_t *r, ngx_http_gzip_ctx_t *ctx) } ctx->allocated = 8192 + 16 + (1 << (wbits + 2)) - + 131072 + (1 << (memlevel + 8)) + + 131072 + (5 << (memlevel + 6)) + 4 * (64 + sizeof(void*)); ctx->zlib_ng = 1; } |
