summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2019-04-11 12:54:43 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2019-04-11 12:54:43 +0100
commitb9437540726e6e30f4bacd350b833ed8e330cb0a (patch)
tree553f1926b0abfbd2a7624238314fbceb07ae508f /src
parent750dc617973a51dff0bd191a2222b3a6926997ce (diff)
downloadrspamd-b9437540726e6e30f4bacd350b833ed8e330cb0a.tar.gz
rspamd-b9437540726e6e30f4bacd350b833ed8e330cb0a.zip
[Minor] Allow to create empty tasks
Diffstat (limited to 'src')
-rw-r--r--src/lua/lua_task.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/lua/lua_task.c b/src/lua/lua_task.c
index ad11f2b41..d809c6ab1 100644
--- a/src/lua/lua_task.c
+++ b/src/lua/lua_task.c
@@ -51,6 +51,13 @@ end
*/
/* Task methods */
+
+/***
+ * @function rspamd_task.create([cfg])
+ * Create a new empty task
+ * @return {rspamd_task} new task
+ */
+LUA_FUNCTION_DEF (task, create);
/***
* @function rspamd_task.load_from_file(filename[, cfg])
* Loads a message from specific file
@@ -1005,6 +1012,7 @@ LUA_FUNCTION_DEF (task, lookup_words);
LUA_FUNCTION_DEF (task, topointer);
static const struct luaL_reg tasklib_f[] = {
+ LUA_INTERFACE_DEF (task, create),
LUA_INTERFACE_DEF (task, load_from_file),
LUA_INTERFACE_DEF (task, load_from_string),
{NULL, NULL}
@@ -1500,6 +1508,32 @@ lua_task_load_from_string (lua_State * L)
return 2;
}
+static gint
+lua_task_create (lua_State * L)
+{
+ LUA_TRACE_POINT;
+ struct rspamd_task *task = NULL, **ptask;
+ struct rspamd_config *cfg = NULL;
+
+ if (lua_type (L, 1) == LUA_TUSERDATA) {
+ gpointer p;
+ p = rspamd_lua_check_udata_maybe (L, 2, "rspamd{config}");
+
+ if (p) {
+ cfg = *(struct rspamd_config **)p;
+ }
+ }
+
+ task = rspamd_task_new (NULL, cfg, NULL, NULL, NULL);
+ task->flags |= RSPAMD_TASK_FLAG_EMPTY;
+
+ ptask = lua_newuserdata (L, sizeof (*ptask));
+ *ptask = task;
+ rspamd_lua_setclass (L, "rspamd{task}", -1);
+
+ return 1;
+}
+
static int
lua_task_get_mempool (lua_State * L)
{