commit c2cdf7c: [Minor] Fix unregistration of the context and improve logging

Vsevolod Stakhov vsevolod at highsecure.ru
Thu Sep 16 12:42:04 UTC 2021


Author: Vsevolod Stakhov
Date: 2021-09-16 13:38:35 +0100
URL: https://github.com/rspamd/rspamd/commit/c2cdf7ceb0b590645f992a62bbab4382a0319617 (HEAD -> master)

[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);
+			}
 		}
 	}
 }


More information about the Commits mailing list