]> source.dussan.org Git - rspamd.git/commitdiff
[Fix] Rewriting subjects via force actions module 1829/head
authorAndrew Lewis <nerf@judo.za.org>
Fri, 8 Sep 2017 08:09:26 +0000 (10:09 +0200)
committerAndrew Lewis <nerf@judo.za.org>
Fri, 8 Sep 2017 08:09:26 +0000 (10:09 +0200)
src/libserver/cfg_file.h
src/libserver/protocol.c
src/lua/lua_task.c

index d96c6e474605fb664529261b1672cfff23f461f4..48f352f499c9ee792c1c21b4e875060558cf450a 100644 (file)
@@ -269,7 +269,7 @@ struct rspamd_metric {
        gdouble unknown_weight;                         /**< weight of unknown symbols                                          */
        gdouble grow_factor;                            /**< grow factor for metric                                                     */
        GHashTable *symbols;                            /**< weights of symbols in metric                                       */
-       gchar *subject;                                 /**< subject rewrite string                                                     */
+       const gchar *subject;                           /**< subject rewrite string                                                     */
        GHashTable * groups;                                /**< groups of symbols                                                              */
        struct metric_action actions[METRIC_ACTION_MAX]; /**< all actions of the metric                                         */
 };
index b012aee0819f7829d1246350f2da695e56e2bcb2..69427e8b50c7787bd75901e207b15b29cd1c1dd0 100644 (file)
@@ -747,7 +747,11 @@ make_rewritten_subject (struct rspamd_metric *metric, struct rspamd_task *task)
        const gchar *s, *c, *p;
        gsize slen = 0;
 
-       c = metric->subject;
+       c = rspamd_mempool_get_variable (task->task_pool, "metric_subject");
+
+       if (c == NULL) {
+               c = metric->subject;
+       }
 
        if (c == NULL) {
                c = SPAM_SUBJECT;
index 9d139044fc8a6c6d3b90ea6bc48dc96a0cc297f9..614c059dd16cdd97ad5873672c3c44767a588dc1 100644 (file)
@@ -4080,13 +4080,12 @@ lua_task_set_metric_subject (lua_State *L)
 {
        struct rspamd_task *task = lua_check_task (L, 1);
        const gchar *subject;
-       struct rspamd_metric *metric;
 
-       metric = task->cfg->default_metric;
        subject = luaL_checkstring (L, 2);
 
-       if (task && metric && subject) {
-               metric->subject = rspamd_mempool_strdup (task->task_pool, subject);
+       if (task && subject) {
+               rspamd_mempool_set_variable (task->task_pool, "metric_subject",
+                       rspamd_mempool_strdup(task->task_pool, subject), NULL);
                lua_pushboolean (L, true);
        }
        else {