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