]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] Set symcache item in coroutine calls
authorVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 3 Feb 2023 19:12:42 +0000 (19:12 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Fri, 3 Feb 2023 19:12:42 +0000 (19:12 +0000)
src/lua/lua_config.c
src/lua/lua_redis.c

index c732b67a1be91cf3bdbc7cbb56afd1a5af71994c..c58b35c56136d88874b43691af2c0442ad6e0fbd 100644 (file)
@@ -1362,6 +1362,7 @@ lua_metric_symbol_callback_coro (struct rspamd_task *task,
        struct rspamd_task **ptask;
        struct thread_entry *thread_entry;
 
+       cd->item = item;
        rspamd_symcache_item_async_inc (task, item, "lua coro symbol");
        thread_entry = lua_thread_pool_get_for_task (task);
 
@@ -1370,7 +1371,6 @@ lua_metric_symbol_callback_coro (struct rspamd_task *task,
 
        lua_State *thread = thread_entry->lua_state;
        cd->stack_level = lua_gettop (thread);
-       cd->item = item;
 
        if (cd->cb_is_ref) {
                lua_rawgeti (thread, LUA_REGISTRYINDEX, cd->callback.ref);
index 3d5ac3db909f164dc06c0377ebcea121500d28c1..8b72a52da8167a1468c1d15c91757227427c6459 100644 (file)
@@ -679,6 +679,11 @@ lua_redis_callback_sync (redisAsyncContext *ac, gpointer r, gpointer priv)
                                ctx->thread = NULL;
 
                                results = lua_redis_push_results(ctx, thread->lua_state);
+
+                               if (ud->item) {
+                                       rspamd_symcache_set_cur_item (ud->task, ud->item);
+                               }
+
                                lua_thread_resume (thread, results);
                                lua_redis_cleanup_events(ctx);
                        }