commit 7721a1a: [Minor] Ensure that Redis inactive connections are well maintained

Vsevolod Stakhov vsevolod at highsecure.ru
Thu Sep 23 13:07:05 UTC 2021


Author: Vsevolod Stakhov
Date: 2021-09-23 14:02:34 +0100
URL: https://github.com/rspamd/rspamd/commit/7721a1a19baa139b460ec6126987a4943b4facb6 (HEAD -> master)

[Minor] Ensure that Redis inactive connections are well maintained

---
 src/libserver/redis_pool.cxx | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/libserver/redis_pool.cxx b/src/libserver/redis_pool.cxx
index 3d56623c8..052f2eb7c 100644
--- a/src/libserver/redis_pool.cxx
+++ b/src/libserver/redis_pool.cxx
@@ -386,6 +386,9 @@ redis_pool_connection::schedule_timeout() -> void
 			ctx, real_timeout);
 
 	timeout.data = this;
+	/* Restore in case if these fields have been modified externally */
+	ctx->data = this;
+	redisAsyncSetDisconnectCallback(ctx, redis_pool_connection::redis_on_disconnect);
 	ev_timer_init(&timeout,
 			redis_pool_connection::redis_conn_timeout_cb,
 			real_timeout, real_timeout / 2.0);
@@ -527,7 +530,7 @@ auto redis_pool::release_connection(redisAsyncContext *ctx,
 			else {
 				if (how == RSPAMD_REDIS_RELEASE_DEFAULT) {
 					/* Ensure that there are no callbacks attached to this conn */
-					if (ctx->replies.head == nullptr) {
+					if (ctx->replies.head == nullptr && (ctx->c.flags & REDIS_CONNECTED)) {
 						/* Just move it to the inactive queue */
 						conn->state = rspamd_redis_pool_connection_state::RSPAMD_REDIS_POOL_CONN_INACTIVE;
 						conn->elt->move_to_inactive(conn);


More information about the Commits mailing list