From 95070f959420a871dff813669f809c345993e5e9 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 25 May 2023 14:41:30 +0100 Subject: [Fix] Fix an old issue with order of destruction race between redis pool and lua --- src/libserver/redis_pool.cxx | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'src/libserver/redis_pool.cxx') diff --git a/src/libserver/redis_pool.cxx b/src/libserver/redis_pool.cxx index 19acaa828..0bbfa55de 100644 --- a/src/libserver/redis_pool.cxx +++ b/src/libserver/redis_pool.cxx @@ -244,13 +244,13 @@ public: conns_by_ctx.emplace(ctx, conn); } - ~redis_pool() { - /* - * XXX: this will prevent hiredis to unregister connections that - * are already destroyed during redisAsyncFree... - */ + /* Hack to prevent Redis callbacks to be executed */ + auto prepare_to_die() -> void + { wanna_die = true; } + + ~redis_pool() {} }; @@ -612,6 +612,7 @@ rspamd_redis_pool_destroy(void *p) { auto *pool = reinterpret_cast(p); + pool->prepare_to_die(); delete pool; } -- cgit v1.2.3