]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Lua_compression: Add support of the compression level for gzip
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 26 Aug 2021 15:08:28 +0000 (16:08 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 26 Aug 2021 15:08:51 +0000 (16:08 +0100)
src/lua/lua_compress.c
src/lua/lua_util.c

index 599a796e0fdb8df045a4dff2f58e5f26fdbbdd92..f383d27c27655e50dab9310f3d299e74e12808c7 100644 (file)
@@ -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) {
index 006917ad7521c48dcc1d400b7f09df5569d905d5..1ac69365a43faec4d7bc017f8f6d65a96da703ae 100644 (file)
@@ -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