diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2021-08-26 16:08:28 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2021-08-26 16:08:51 +0100 |
commit | c7bca7a471a4d91ba5b7489ff234f30f92821dac (patch) | |
tree | 7655172623aae7d6b69deff173fff900f1e90ba9 | |
parent | 4b22c83c6522476a160cb9ee07d5f21006c2e70b (diff) | |
download | rspamd-c7bca7a471a4d91ba5b7489ff234f30f92821dac.tar.gz rspamd-c7bca7a471a4d91ba5b7489ff234f30f92821dac.zip |
[Minor] Lua_compression: Add support of the compression level for gzip
-rw-r--r-- | src/lua/lua_compress.c | 13 | ||||
-rw-r--r-- | src/lua/lua_util.c | 2 |
2 files changed, 12 insertions, 3 deletions
diff --git a/src/lua/lua_compress.c b/src/lua/lua_compress.c index 599a796e0..f383d27c2 100644 --- a/src/lua/lua_compress.c +++ b/src/lua/lua_compress.c @@ -323,7 +323,7 @@ lua_compress_zlib_compress (lua_State *L) struct rspamd_lua_text *t = NULL, *res; gsize sz; z_stream strm; - gint rc; + gint rc, comp_level = Z_DEFAULT_COMPRESSION; guchar *p; gsize remain; @@ -333,9 +333,18 @@ lua_compress_zlib_compress (lua_State *L) return luaL_error (L, "invalid arguments"); } + if (lua_isnumber (L, 2)) { + comp_level = lua_tointeger (L, 2); + + if (comp_level > Z_BEST_COMPRESSION || comp_level < Z_BEST_SPEED) { + return luaL_error (L, "invalid arguments: compression level must be between %d and %d", + Z_BEST_SPEED, Z_BEST_COMPRESSION); + } + } + memset (&strm, 0, sizeof (strm)); - rc = deflateInit2 (&strm, Z_DEFAULT_COMPRESSION, Z_DEFLATED, + rc = deflateInit2 (&strm, comp_level, Z_DEFLATED, MAX_WBITS + 16, MAX_MEM_LEVEL - 1, Z_DEFAULT_STRATEGY); if (rc != Z_OK) { diff --git a/src/lua/lua_util.c b/src/lua/lua_util.c index 006917ad7..1ac69365a 100644 --- a/src/lua/lua_util.c +++ b/src/lua/lua_util.c @@ -401,7 +401,7 @@ LUA_FUNCTION_DEF (util, gzip_decompress); LUA_FUNCTION_DEF (util, inflate); /*** - * @function util.gzip_compress(data) + * @function util.gzip_compress(data, [level=1]) * Compresses input using gzip compression * * @param {string/rspamd_text} data input data |