]> source.dussan.org Git - rspamd.git/commitdiff
[Feature] Maps: Allow caching for complex maps
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 27 Aug 2019 18:20:51 +0000 (19:20 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 27 Aug 2019 18:20:51 +0000 (19:20 +0100)
lualib/lua_maps.lua

index 094494dcaba43a6d47e125a288e9655277d68d57..23e5cb942df926515d17ac712f4e7a23ac2b3208 100644 (file)
@@ -21,6 +21,7 @@ limitations under the License.
 
 local rspamd_logger = require "rspamd_logger"
 local ts = require("tableshape").types
+local lua_util = require "lua_util"
 
 local exports = {}
 
@@ -137,8 +138,14 @@ local function rspamd_map_add_from_ucl(opt, mtype, description)
       return ret
     end
   elseif type(opt) == 'table' then
-    -- it might be plain map or map of plain elements
-    -- no caching in this case (yet)
+    local k = lua_util.table_digest(opt)
+    if maps_cache[k] then
+      rspamd_logger.infox(rspamd_config, 'reuse url for %s(%s)',
+          opt, mtype)
+
+      return maps_cache[k]
+    end
+
     if opt[1] then
       if mtype == 'radix' then