]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Use alpha cmp for scores in dynamic conf
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 26 Oct 2016 11:16:19 +0000 (13:16 +0200)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 26 Oct 2016 11:16:19 +0000 (13:16 +0200)
src/plugins/lua/dynamic_conf.lua

index ab7812c86b7bc6edb28c43f4012363e7b2ee5dac..7bfbc6cb8686aeaafb26353d5b0edb0dec9524ae 100644 (file)
@@ -35,6 +35,15 @@ local cur_settings = {
   }
 }
 
+local function alpha_cmp(v1, v2)
+  local math = math
+  if math.abs(v1 - v2) < 0.001 then
+    return true
+  end
+
+  return false
+end
+
 local function redis_make_request(ev_base, cfg, key, is_write, callback, command, args)
   if not ev_base or not redis_params or not callback or not command then
     return false,nil,nil
@@ -100,7 +109,7 @@ local function apply_dynamic_actions(cfg, acts)
     end
   end, filter(function(k, v)
     local act = rspamd_config:get_metric_action(k)
-    if (act and act == v) or cur_settings.updates.actions[k] then
+    if (act and alpha_cmp(act, v)) or cur_settings.updates.actions[k] then
       return false
     end
 
@@ -126,7 +135,7 @@ local function apply_dynamic_scores(cfg, sc)
   end, filter(function(k, v)
     -- Select elts with scores that are different from local ones
     local sym = rspamd_config:get_metric_symbol(k)
-    if (sym and sym.score == v) or cur_settings.updates.symbols[k] then
+    if (sym and alpha_cmp(sym.score, v)) or cur_settings.updates.symbols[k] then
       return false
     end
 
@@ -181,7 +190,7 @@ local function update_dynamic_conf(cfg, ev_base, recv)
         cur_settings.data.scores = {}
       end
       each(function(k, v)
-        cur_settings.data.score[k] = v
+        cur_settings.data.scores[k] = v
       end,
       filter(function(k,v)
         if cur_settings.updates.symbols[k] then