-- 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 {}
* 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);
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