From d1cab3edeef224d8d2611087d4fa12623e68165d Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Fri, 21 Aug 2020 21:47:59 +0100 Subject: [PATCH] [Fix] Fix storing of the original smtp from --- src/libserver/task.c | 4 ++++ src/libserver/task.h | 1 + src/lua/lua_task.c | 22 +++++++++++++++------- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/libserver/task.c b/src/libserver/task.c index 12f20f393..53da0dae6 100644 --- a/src/libserver/task.c +++ b/src/libserver/task.c @@ -204,6 +204,10 @@ rspamd_task_free (struct rspamd_task *task) rspamd_email_address_free (task->from_envelope); } + if (task->from_envelope_orig) { + rspamd_email_address_free (task->from_envelope_orig); + } + if (task->meta_words) { g_array_free (task->meta_words, TRUE); } diff --git a/src/libserver/task.h b/src/libserver/task.h index 778b77dbf..aa6d01a2e 100644 --- a/src/libserver/task.h +++ b/src/libserver/task.h @@ -190,6 +190,7 @@ struct rspamd_task { GPtrArray *rcpt_envelope; /**< array of rspamd_email_address */ struct rspamd_email_address *from_envelope; + struct rspamd_email_address *from_envelope_orig; ucl_object_t *messages; /**< list of messages that would be reported */ struct rspamd_re_runtime *re_rt; /**< regexp runtime */ diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c index 09479ea21..6fc3768f7 100644 --- a/src/lua/lua_task.c +++ b/src/lua/lua_task.c @@ -3767,7 +3767,18 @@ lua_task_get_from (lua_State *L) /* Create table to preserve compatibility */ if (addr->addr) { lua_createtable (L, 1, 0); - lua_push_email_address (L, addr); + if (what & RSPAMD_ADDRESS_ORIGINAL) { + if (task->from_envelope_orig) { + lua_push_email_address (L, task->from_envelope_orig); + } + else { + lua_push_email_address (L, addr); + } + } + else { + lua_push_email_address (L, addr); + } + lua_rawseti (L, -2, 1); } else { @@ -3851,13 +3862,10 @@ lua_task_set_from (lua_State *L) } } else if (paddr) { + /* SMTP from case */ if (lua_import_email_address (L, task, 3, &addr)) { - - if (paddr) { - rspamd_email_address_free (*paddr); - } - - *paddr = addr; + task->from_envelope_orig = *paddr; + task->from_envelope = addr; lua_pushboolean (L, true); } else { -- 2.39.5