]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Rework] Always create result for a task
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 11 Oct 2018 13:32:11 +0000 (14:32 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 11 Oct 2018 13:32:11 +0000 (14:32 +0100)
src/libmime/filter.c
src/libmime/filter.h
src/libmime/message.c
src/libserver/symbols_cache.c
src/libserver/task.c
src/libserver/task.h
src/lua/lua_task.c

index 81f8818bb74d5f42685ce8c416d3a0cf4d0e787d..cdbfdcfbf9adbac14ca7063265a9981c67945e1d 100644 (file)
@@ -123,7 +123,7 @@ insert_metric_result (struct rspamd_task *task,
        gboolean single = !!(flags & RSPAMD_SYMBOL_INSERT_SINGLE);
        gchar *sym_cpy;
 
-       metric_res = rspamd_create_metric_result (task);
+       metric_res = task->result;
 
        if (!isfinite (weight)) {
                msg_warn_task ("detected %s score for symbol %s, replace it with zero",
index 5a7cecb68071aa02708660423d687aa1445dd6a3..9137258f57a17d07a694e3afd0cec69cfde4b9f9 100644 (file)
@@ -59,8 +59,9 @@ KHASH_INIT (rspamd_symbols_group_hash,
                rspamd_ptr_hash_func,
                rspamd_ptr_equal_func);
 struct rspamd_metric_result {
-       double score;                                   /**< total score                                                        */
+       double score;                                                                   /**< total score                                                        */
        double grow_factor;                                                             /**< current grow factor                                        */
+
        khash_t(rspamd_symbols_hash) *symbols;                  /**< symbols of metric                                          */
        khash_t(rspamd_symbols_group_hash) *sym_groups; /**< groups of symbols                                          */
        gdouble actions_limits[METRIC_ACTION_MAX];              /**< set of actions for this metric                     */
index a5dec97758a6fe25ff42b950e3bcaf3960b79e5d..4206211c14389d3f92641baece8835e1bce33375 100644 (file)
@@ -856,7 +856,7 @@ rspamd_message_process_text_part_maybe (struct rspamd_task *task,
        if (act != METRIC_ACTION_NOACTION) {
                struct rspamd_metric_result *mres;
 
-               mres = rspamd_create_metric_result (task);
+               mres = task->result;
 
                if (mres != NULL) {
                        if (act == METRIC_ACTION_REJECT) {
index 0bd90ec7069156ad5ea879ac92cc614f42f0bf43..9cd52458bc815e588cf13c4e8e39b0ca1e0ab620 100644 (file)
@@ -1607,7 +1607,7 @@ rspamd_symbols_cache_make_checkpoint (struct rspamd_task *task,
        checkpoint->pass = RSPAMD_CACHE_PASS_INIT;
        task->checkpoint = checkpoint;
 
-       task->result = rspamd_create_metric_result (task);
+       task->result = task->result;
 
        return checkpoint;
 }
index 0fde93f55b4e05cafeb32066a649b3d15425da7d..42d9b17895e42c009d43e30f2669c1eef5c4f903 100644 (file)
@@ -145,7 +145,7 @@ rspamd_task_new (struct rspamd_worker *worker, struct rspamd_config *cfg,
 
        new_task->sock = -1;
        new_task->flags |= (RSPAMD_TASK_FLAG_MIME|RSPAMD_TASK_FLAG_JSON);
-       new_task->pre_result.action = METRIC_ACTION_MAX;
+       new_task->result = rspamd_create_metric_result (new_task);
 
        new_task->message_id = new_task->queue_id = "undef";
        new_task->messages = ucl_object_typed_new (UCL_OBJECT);
index b9fd2f811d9ef652d9e9ce49edd79fed02ae11a6..c1eec96edff9093865774115f31caf661763fb23 100644 (file)
@@ -201,12 +201,6 @@ struct rspamd_task {
        struct event *guard_ev;                                                 /**< Event for input sanity guard                                       */
 
        gpointer checkpoint;                                                    /**< Opaque checkpoint data                                                     */
-
-       struct {
-               gint action;                                                            /**< Action of pre filters                                                      */
-               gchar *str;                                                                     /**< String describing action                                           */
-       } pre_result;                                                                   /**< Result of pre-filters                                                      */
-
        ucl_object_t *settings;                                                 /**< Settings applied to task                                           */
 
        const gchar *classifier;                                                /**< Classifier to learn (if needed)                            */
index 1fb7313c000fc03b40ab7e531a8c3049f170ab5d..7f2711e196255cb8179924d4dfb7b04769c27977 100644 (file)
@@ -1586,9 +1586,6 @@ lua_task_set_pre_result (lua_State * L)
 
                if (action < METRIC_ACTION_MAX && action >= METRIC_ACTION_REJECT) {
                        /* We also need to set the default metric to that result */
-                       if (!task->result) {
-                               task->result = rspamd_create_metric_result (task);
-                       }
 
                        task->pre_result.action = action;
 
@@ -4127,10 +4124,6 @@ lua_task_set_settings (lua_State *L)
                        /* Adjust desired actions */
                        mres = task->result;
 
-                       if (mres == NULL) {
-                               mres = rspamd_create_metric_result (task);
-                       }
-
                        for (i = 0; i < METRIC_ACTION_MAX; i++) {
                                elt = ucl_object_lookup_any (act, rspamd_action_to_str (i),
                                                rspamd_action_to_str_alt (i), NULL);
@@ -4543,9 +4536,7 @@ lua_task_get_metric_action (lua_State *L)
        enum rspamd_action_type action;
 
        if (task) {
-               if ((metric_res = task->result) == NULL) {
-                       metric_res = rspamd_create_metric_result (task);
-               }
+               metric_res = task->result;
 
                action = rspamd_check_action_metric (task, metric_res);
                lua_pushstring (L, rspamd_action_to_str (action));