]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Add some sanity checks to the redis scripts
authorVsevolod Stakhov <vsevolod@rspamd.com>
Mon, 20 Jun 2022 19:46:27 +0000 (20:46 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Mon, 20 Jun 2022 19:46:27 +0000 (20:46 +0100)
lualib/plugins/neural.lua

index d2db2f519e2ee13a64ae82f94953d97afa352716..67051fa1aea6e2960232d8595dc31df696e4442f 100644 (file)
@@ -127,12 +127,16 @@ local redis_lua_script_maybe_invalidate = [[
   local lim = tonumber(KEYS[2])
   if card > lim then
     local to_delete = redis.call('ZRANGE', KEYS[1], 0, card - lim - 1)
-    for _,k in ipairs(to_delete) do
-      local tb = cjson.decode(k)
-      redis.call('DEL', tb.redis_key)
-      -- Also train vectors
-      redis.call('DEL', tb.redis_key .. '_spam')
-      redis.call('DEL', tb.redis_key .. '_ham')
+    if to_delete then
+      for _,k in ipairs(to_delete) do
+        local tb = cjson.decode(k)
+        if type(tb) == 'table' and type(tb.redis_key) == 'string' then
+          redis.call('DEL', tb.redis_key)
+          -- Also train vectors
+          redis.call('DEL', tb.redis_key .. '_spam')
+          redis.call('DEL', tb.redis_key .. '_ham')
+        end
+      end
     end
     redis.call('ZREMRANGEBYRANK', KEYS[1], 0, card - lim - 1)
     return to_delete