diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-03-31 14:38:45 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-03-31 14:38:45 +0100 |
commit | 6d27d22f08e2dcabe2b3a5122f3478d45fc3cf66 (patch) | |
tree | 90d5c64f4762b208d8d28e123220f12cb501b646 /src/lua | |
parent | 9edaaecc87bcef858af637ac27859117dd34e2b9 (diff) | |
download | rspamd-6d27d22f08e2dcabe2b3a5122f3478d45fc3cf66.tar.gz rspamd-6d27d22f08e2dcabe2b3a5122f3478d45fc3cf66.zip |
[Feature] Allow tables in task:insert_result
Diffstat (limited to 'src/lua')
-rw-r--r-- | src/lua/lua_task.c | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c index d193cdbc6..003c4f086 100644 --- a/src/lua/lua_task.c +++ b/src/lua/lua_task.c @@ -844,10 +844,26 @@ lua_task_insert_result (lua_State * L) top = lua_gettop (L); /* Get additional options */ for (i = 4; i <= top; i++) { - param = luaL_checkstring (L, i); - params = - g_list_prepend (params, - rspamd_mempool_strdup (task->task_pool, param)); + if (lua_type (L, i) == LUA_TSTRING) { + param = luaL_checkstring (L, i); + params = + g_list_prepend (params, + rspamd_mempool_strdup (task->task_pool, param)); + } + else if (lua_type (L, i) == LUA_TTABLE) { + lua_pushvalue (L, i); + lua_pushnil (L); + + while (lua_next (L, -2)) { + param = lua_tostring (L, -1); + params = g_list_prepend (params, + rspamd_mempool_strdup (task->task_pool, + param)); + lua_pop (L, 1); + } + + lua_pop (L, 1); + } } rspamd_task_insert_result (task, symbol_name, flag, params); |