aboutsummaryrefslogtreecommitdiffstats
path: root/src/lua
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-03-31 14:38:45 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-03-31 14:38:45 +0100
commit6d27d22f08e2dcabe2b3a5122f3478d45fc3cf66 (patch)
tree90d5c64f4762b208d8d28e123220f12cb501b646 /src/lua
parent9edaaecc87bcef858af637ac27859117dd34e2b9 (diff)
downloadrspamd-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.c24
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);