enum rspamd_redis_connection_state {
RSPAMD_REDIS_DISCONNECTED = 0,
RSPAMD_REDIS_CONNECTED,
- RSPAMD_REDIS_TIMEDOUT
+ RSPAMD_REDIS_TIMEDOUT,
+ RSPAMD_REDIS_TERMINATED
};
struct redis_stat_runtime {
struct redis_stat_runtime *rt = REDIS_RUNTIME (data);
if (rt->conn_state != RSPAMD_REDIS_CONNECTED) {
- rt->conn_state = RSPAMD_REDIS_DISCONNECTED;
+ rt->conn_state = RSPAMD_REDIS_TERMINATED;
event_del (&rt->timeout_event);
REF_RELEASE (rt);
}
struct redis_stat_runtime *rt = REDIS_RUNTIME (data);
if (rt->conn_state != RSPAMD_REDIS_CONNECTED) {
- rt->conn_state = RSPAMD_REDIS_DISCONNECTED;
+ rt->conn_state = RSPAMD_REDIS_TERMINATED;
event_del (&rt->timeout_event);
REF_RELEASE (rt);
}
rspamd_upstream_name (rt->selected));
rspamd_upstream_fail (rt->selected);
- if (rt->conn_state == RSPAMD_REDIS_CONNECTED) {
+ if (rt->conn_state != RSPAMD_REDIS_TERMINATED) {
rspamd_session_remove_event (task->s, rspamd_redis_fin, rt);
}
task = rt->task;
- if (rt->conn_state != RSPAMD_REDIS_CONNECTED) {
+ if (rt->conn_state == RSPAMD_REDIS_TERMINATED) {
/* Task has disappeared already */
REF_RELEASE (rt);
return;
task = rt->task;
- if (rt->conn_state != RSPAMD_REDIS_CONNECTED) {
+ if (rt->conn_state == RSPAMD_REDIS_TERMINATED) {
/* Task has disappeared already */
REF_RELEASE (rt);
return;
task = rt->task;
- if (rt->conn_state != RSPAMD_REDIS_CONNECTED) {
+ if (rt->conn_state == RSPAMD_REDIS_TERMINATED) {
/* Task has disappeared already */
REF_RELEASE (rt);
return;
if (rt->conn_state == RSPAMD_REDIS_CONNECTED) {
redisAsyncFree (rt->redis);
- rt->conn_state = RSPAMD_REDIS_DISCONNECTED;
+ rt->conn_state = RSPAMD_REDIS_TERMINATED;
}
REF_RELEASE (rt);
redisAsyncFree (rt->redis);
rt->redis = NULL;
- rt->conn_state = RSPAMD_REDIS_DISCONNECTED;
+ rt->conn_state = RSPAMD_REDIS_TERMINATED;
REF_RELEASE (rt);
}
rspamd_token_t *tok;
gint ret;
- if (rt->conn_state != RSPAMD_REDIS_DISCONNECTED) {
+ if (rt->conn_state == RSPAMD_REDIS_CONNECTED) {
/* We are likely in some bad state */
msg_err_task ("invalid state for function: %d", rt->conn_state);
redisAsyncFree (rt->redis);
rt->redis = NULL;
- rt->conn_state = RSPAMD_REDIS_DISCONNECTED;
+ rt->conn_state = RSPAMD_REDIS_TERMINATED;
REF_RELEASE (rt);
}
}
redisAsyncFree (rt->redis);
rt->redis = NULL;
- rt->conn_state = RSPAMD_REDIS_DISCONNECTED;
+ rt->conn_state = RSPAMD_REDIS_TERMINATED;
}
if (st->stat) {