From c2cdf7ceb0b590645f992a62bbab4382a0319617 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 16 Sep 2021 13:38:35 +0100 Subject: [PATCH] [Minor] Fix unregistration of the context and improve logging --- src/libserver/redis_pool.cxx | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/libserver/redis_pool.cxx b/src/libserver/redis_pool.cxx index 8cdb12587..e2deb5181 100644 --- a/src/libserver/redis_pool.cxx +++ b/src/libserver/redis_pool.cxx @@ -261,32 +261,35 @@ redis_pool_connection::~redis_pool_connection() const auto *conn = this; /* For debug */ if (state == RSPAMD_REDIS_POOL_CONN_ACTIVE) { - msg_debug_rpool ("active connection destructed"); + msg_debug_rpool ("active connection destructed: %p", ctx); if (ctx) { + pool->unregister_context(ctx); + if (!(ctx->c.flags & REDIS_FREEING)) { auto *ac = ctx; ctx = nullptr; - pool->unregister_context(ac); ac->onDisconnect = nullptr; redisAsyncFree(ac); } } } else { - msg_debug_rpool("inactive connection destructed"); + msg_debug_rpool("inactive connection destructed: %p", ctx); ev_timer_stop(pool->event_loop, &timeout); + if (ctx) { + pool->unregister_context(ctx); - if (ctx && !(ctx->c.flags & REDIS_FREEING)) { - redisAsyncContext *ac = ctx; + if (!(ctx->c.flags & REDIS_FREEING)) { + redisAsyncContext *ac = ctx; - /* To prevent on_disconnect here */ - state = RSPAMD_REDIS_POOL_CONN_FINALISING; - pool->unregister_context(ac); - ctx = nullptr; - ac->onDisconnect = nullptr; - redisAsyncFree(ac); + /* To prevent on_disconnect here */ + state = RSPAMD_REDIS_POOL_CONN_FINALISING; + ctx = nullptr; + ac->onDisconnect = nullptr; + redisAsyncFree(ac); + } } } } -- 2.39.5