From: Vsevolod Stakhov Date: Sat, 20 May 2017 14:33:41 +0000 (+0100) Subject: [Minor] Merge rmilter reply instead of overwriting it X-Git-Tag: 1.6.0~155 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4f02ece36c8484554d9856b2d28163870375b528;p=thirdparty%2Frspamd.git [Minor] Merge rmilter reply instead of overwriting it --- diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c index 68822f348c..8445e25eda 100644 --- a/src/lua/lua_task.c +++ b/src/lua/lua_task.c @@ -3520,14 +3520,23 @@ static gint lua_task_set_rmilter_reply (lua_State *L) { struct rspamd_task *task = lua_check_task (L, 1); - ucl_object_t *reply; + ucl_object_t *reply, *prev; reply = ucl_object_lua_import (L, 2); if (reply != NULL && task != NULL) { - rspamd_mempool_set_variable (task->task_pool, - RSPAMD_MEMPOOL_RMILTER_REPLY, - reply, (rspamd_mempool_destruct_t)ucl_object_unref); + prev = rspamd_mempool_get_variable (task->task_pool, + RSPAMD_MEMPOOL_RMILTER_REPLY); + + if (prev) { + ucl_object_merge (prev, reply, false); + ucl_object_unref (reply); + } + else { + rspamd_mempool_set_variable (task->task_pool, + RSPAMD_MEMPOOL_RMILTER_REPLY, + reply, (rspamd_mempool_destruct_t) ucl_object_unref); + } } else { return luaL_error (L, "invalid arguments");