]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Bayes_expiry: Test type before trying to evaluate
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 13 Jan 2020 09:41:52 +0000 (09:41 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 13 Jan 2020 09:41:52 +0000 (09:41 +0000)
Issue: #3208

src/plugins/lua/bayes_expiry.lua

index e5eb471d418b7ca9d5bfe05809bc5352cd3046a0..6cdd1a059a085fed2915359b307b26e3accb1064 100644 (file)
@@ -259,23 +259,26 @@ local expiry_script = [[
     0,0,0,0,0,0,0,0,0,0,0
 
   for _,key in ipairs(keys) do
-    local values = redis.call('HMGET', key, 'H', 'S')
-    local ham = tonumber(values[1]) or 0
-    local spam = tonumber(values[2]) or 0
-    local ttl = redis.call('TTL', key)
-    tokens[key] = {
-      ham,
-      spam,
-      ttl
-    }
-    local total = spam + ham
-    sum = sum + total
-    sum_squares = sum_squares + total * total
-    nelts = nelts + 1
-
-    for k,v in pairs({['ham']=ham, ['spam']=spam, ['total']=total}) do
-      if tonumber(v) > 19 then v = 20 end
-      occurr[k][v] = occurr[k][v] and occurr[k][v] + 1 or 1
+    local t = redis.call('TYPE', key)
+    if t == 'hash' then
+      local values = redis.call('HMGET', key, 'H', 'S')
+      local ham = tonumber(values[1]) or 0
+      local spam = tonumber(values[2]) or 0
+      local ttl = redis.call('TTL', key)
+      tokens[key] = {
+        ham,
+        spam,
+        ttl
+      }
+      local total = spam + ham
+      sum = sum + total
+      sum_squares = sum_squares + total * total
+      nelts = nelts + 1
+
+      for k,v in pairs({['ham']=ham, ['spam']=spam, ['total']=total}) do
+        if tonumber(v) > 19 then v = 20 end
+        occurr[k][v] = occurr[k][v] and occurr[k][v] + 1 or 1
+      end
     end
   end