]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Use rspamd_lua_task_push in all task creation paths
authorVsevolod Stakhov <vsevolod@rspamd.com>
Sun, 21 Dec 2025 22:23:36 +0000 (22:23 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Sun, 21 Dec 2025 22:23:36 +0000 (22:23 +0000)
Fix load_from_file, load_from_string, and create to use
rspamd_lua_task_push instead of directly creating userdata
with raw task pointer.

src/lua/lua_task.c

index 2cee364c7ec9f3479a6df0cf28999209b23da8df..613d7f080d217cc3655477e218cf44a1eface3af 100644 (file)
@@ -1824,7 +1824,7 @@ static int
 lua_task_load_from_file(lua_State *L)
 {
        LUA_TRACE_POINT;
-       struct rspamd_task *task = NULL, **ptask;
+       struct rspamd_task *task = NULL;
        const char *fname, *err = NULL;
        struct rspamd_config *cfg = NULL;
        gboolean res = FALSE, new_task = FALSE;
@@ -1920,9 +1920,7 @@ lua_task_load_from_file(lua_State *L)
        lua_pushboolean(L, res);
 
        if (res && new_task) {
-               ptask = lua_newuserdata(L, sizeof(*ptask));
-               *ptask = task;
-               rspamd_lua_setclass(L, rspamd_task_classname, -1);
+               rspamd_lua_task_push(L, task);
 
                return 2;
        }
@@ -1945,7 +1943,7 @@ static int
 lua_task_load_from_string(lua_State *L)
 {
        LUA_TRACE_POINT;
-       struct rspamd_task *task = NULL, **ptask;
+       struct rspamd_task *task = NULL;
        const char *str_message;
        gsize message_len = 0;
        struct rspamd_config *cfg = NULL;
@@ -1991,9 +1989,7 @@ lua_task_load_from_string(lua_State *L)
        lua_pushboolean(L, true);
 
        if (new_task) {
-               ptask = lua_newuserdata(L, sizeof(*ptask));
-               *ptask = task;
-               rspamd_lua_setclass(L, rspamd_task_classname, -1);
+               rspamd_lua_task_push(L, task);
 
                return 2;
        }
@@ -2006,7 +2002,7 @@ static int
 lua_task_create(lua_State *L)
 {
        LUA_TRACE_POINT;
-       struct rspamd_task *task = NULL, **ptask;
+       struct rspamd_task *task = NULL;
        struct rspamd_config *cfg = NULL;
        struct ev_loop *ev_base = NULL;
 
@@ -2034,9 +2030,7 @@ lua_task_create(lua_State *L)
        task = rspamd_task_new(NULL, cfg, NULL, NULL, ev_base, FALSE);
        task->flags |= RSPAMD_TASK_FLAG_EMPTY;
 
-       ptask = lua_newuserdata(L, sizeof(*ptask));
-       *ptask = task;
-       rspamd_lua_setclass(L, rspamd_task_classname, -1);
+       rspamd_lua_task_push(L, task);
 
        return 1;
 }