]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Fix signing with `skip_process` flag
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 11 Nov 2021 10:22:01 +0000 (10:22 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 11 Nov 2021 10:22:01 +0000 (10:22 +0000)
lualib/lua_mime.lua
src/lua/lua_task.c

index 4e61b4a20aa1c1b42c3c683c70a839d72806387c..24c02daaec9190e14d5f2d988b8910f7ce45b0ae 100644 (file)
@@ -515,10 +515,6 @@ end
 -- Adds/removes headers both internal and in the milter reply
 --]]
 exports.modify_headers = function(task, hdr_alterations)
-  if task:has_flag('skip_process') then
-    -- Cannot set flags for skipped (and unprocessed) task
-    return
-  end
   local add = hdr_alterations.add or {}
   local remove = hdr_alterations.remove or {}
 
index bc9ab875079783aef224ea0608a9d8aa6d063b62..48006fa84739bf78891a2182b8ab7ae30fefd1c6 100644 (file)
@@ -444,6 +444,7 @@ LUA_FUNCTION_DEF (task, get_headers);
  * remove from the end
  * Order in addition means addition from the top: 0 means the most top header, 1 one after, etc
  * negative order means addtion to the end, e.g. -1 is appending header.
+ * @return {bool} true if header could be modified (always true unless we don't have an unparsed message)
  */
 LUA_FUNCTION_DEF (task, modify_header);
 
@@ -6671,17 +6672,24 @@ lua_task_modify_header (lua_State *L)
        const gchar *hname = luaL_checkstring (L, 2);
 
        if (hname && task && lua_type (L, 3) == LUA_TTABLE) {
-               ucl_object_t *mods = ucl_object_lua_import (L, 3);
+               if (task->message) {
+                       ucl_object_t *mods = ucl_object_lua_import(L, 3);
+
+                       rspamd_message_set_modified_header(task,
+                                       MESSAGE_FIELD_CHECK (task, raw_headers), hname, mods);
+                       ucl_object_unref(mods);
 
-               rspamd_message_set_modified_header (task,
-                               MESSAGE_FIELD_CHECK (task, raw_headers), hname, mods);
-               ucl_object_unref (mods);
+                       lua_pushboolean (L, true);
+               }
+               else {
+                       lua_pushboolean (L, false);
+               }
        }
        else {
                return luaL_error (L, "invalid arguments");
        }
 
-       return 0;
+       return 1;
 }
 
 static gint