]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
Really allow to specify multiplier in return value.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 17 Aug 2014 17:53:07 +0000 (18:53 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Sun, 17 Aug 2014 17:53:07 +0000 (18:53 +0100)
src/lua/lua_config.c

index 5eddcbb82b9ef54389041c21676167fc3028ac09..2862c62de87fa19edc916b5e1d31d891fa4c2121 100644 (file)
@@ -635,11 +635,20 @@ lua_metric_symbol_callback (struct rspamd_task *task, gpointer ud)
                gboolean res;
                GList *opts = NULL;
                gint i;
+               gdouble flag = 1.0;
 
                if (lua_type (cd->L, level + 1) == LUA_TBOOLEAN) {
                        res = lua_toboolean (cd->L, level + 1);
                        if (res) {
-                               for (i = lua_gettop (cd->L); i > level + 1; i --) {
+                               gint first_opt = 2;
+
+                               if (lua_type (cd->L, level + 2) == LUA_TNUMBER) {
+                                       flag = lua_tonumber (cd->L, level + 2);
+                                       /* Shift opt index */
+                                       first_opt = 3;
+                               }
+
+                               for (i = lua_gettop (cd->L); i >= level + first_opt; i --) {
                                        if (lua_type (cd->L, i) == LUA_TSTRING) {
                                                const char *opt = lua_tostring (cd->L, i);
 
@@ -647,7 +656,7 @@ lua_metric_symbol_callback (struct rspamd_task *task, gpointer ud)
                                                        rspamd_mempool_strdup (task->task_pool, opt));
                                        }
                                }
-                               insert_result (task, cd->symbol, 1.0, opts);
+                               insert_result (task, cd->symbol, flag, opts);
                        }
                }
                lua_pop (cd->L, nresults);