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