summaryrefslogtreecommitdiffstats
path: root/src/lua/lua_task.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-03-29 16:57:09 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-03-29 16:57:09 +0100
commit803bfde8ef09ac498f882ae57adb36c29f9ea591 (patch)
tree17d1d259c4f4833efc0be30f5b7f9871ee08b143 /src/lua/lua_task.c
parent1ce182c9bb3c7fd436ac5b982905d0e3616cd7a8 (diff)
downloadrspamd-803bfde8ef09ac498f882ae57adb36c29f9ea591.tar.gz
rspamd-803bfde8ef09ac498f882ae57adb36c29f9ea591.zip
[Feature] Improve processing of headers to lua
Diffstat (limited to 'src/lua/lua_task.c')
-rw-r--r--src/lua/lua_task.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c
index 82ac79288..298a2f154 100644
--- a/src/lua/lua_task.c
+++ b/src/lua/lua_task.c
@@ -21,6 +21,7 @@
#include "util.h"
#include "images.h"
#include "cfg_file.h"
+#include "utlist.h"
/***
* @module rspamd_task
@@ -1173,7 +1174,7 @@ rspamd_lua_push_header (lua_State * L,
gboolean raw)
{
- struct raw_header *rh;
+ struct raw_header *rh, *cur;
gint i = 1;
const gchar *val;
@@ -1185,9 +1186,16 @@ rspamd_lua_push_header (lua_State * L,
}
if (full) {
- lua_newtable (L);
+ i = 0;
+ LL_FOREACH (rh, cur) {
+ i ++;
+ }
+
+ lua_createtable (L, i, 0);
}
+ i = 1;
+
while (rh) {
if (rh->name == NULL) {
rh = rh->next;
@@ -1202,7 +1210,7 @@ rspamd_lua_push_header (lua_State * L,
}
if (full) {
/* Create new associated table for a header */
- lua_newtable (L);
+ lua_createtable (L, 0, 6);
rspamd_lua_table_set (L, "name", rh->name);
if (rh->value) {
rspamd_lua_table_set (L, "value", rh->value);