diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-10-20 18:32:25 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2018-10-20 19:43:32 +0100 |
commit | f76b1582238a3ee7f45308f1df4f840c21b946a8 (patch) | |
tree | ade86728e44d37eadd73ac588936b88eda6f69a2 /src/libstat/learn_cache | |
parent | 251a7c9d11a676a58f22edb8afd09f20c69bd61f (diff) | |
download | rspamd-f76b1582238a3ee7f45308f1df4f840c21b946a8.tar.gz rspamd-f76b1582238a3ee7f45308f1df4f840c21b946a8.zip |
[Project] Adopt C modules and stuff
Diffstat (limited to 'src/libstat/learn_cache')
-rw-r--r-- | src/libstat/learn_cache/redis_cache.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/libstat/learn_cache/redis_cache.c b/src/libstat/learn_cache/redis_cache.c index 11bc13aae..789991186 100644 --- a/src/libstat/learn_cache/redis_cache.c +++ b/src/libstat/learn_cache/redis_cache.c @@ -41,6 +41,7 @@ struct rspamd_redis_cache_ctx { struct rspamd_redis_cache_runtime { struct rspamd_redis_cache_ctx *ctx; struct rspamd_task *task; + struct rspamd_symcache_item *item; struct upstream *selected; struct event timeout_event; redisAsyncContext *redis; @@ -151,6 +152,9 @@ rspamd_stat_cache_redis_get (redisAsyncContext *c, gpointer r, gpointer priv) } if (rt->has_event) { + if (rt->item) { + rspamd_symcache_item_async_dec_check (task, rt->item); + } rspamd_session_remove_event (task->s, rspamd_redis_cache_fin, rt); } } @@ -173,6 +177,9 @@ rspamd_stat_cache_redis_set (redisAsyncContext *c, gpointer r, gpointer priv) } if (rt->has_event) { + if (rt->item) { + rspamd_symcache_item_async_dec_check (task, rt->item); + } rspamd_session_remove_event (task->s, rspamd_redis_cache_fin, rt); } } @@ -453,7 +460,11 @@ rspamd_stat_cache_redis_check (struct rspamd_task *task, if (redisAsyncCommand (rt->redis, rspamd_stat_cache_redis_get, rt, "HGET %s %s", rt->ctx->redis_object, h) == REDIS_OK) { - rspamd_session_add_event (task->s, NULL, rspamd_redis_cache_fin, rt, rspamd_stat_cache_redis_quark ()); + rspamd_session_add_event (task->s, + rspamd_redis_cache_fin, + rt, + rspamd_stat_cache_redis_quark ()); + rt->item = rspamd_symbols_cache_get_cur_item (task); event_add (&rt->timeout_event, &tv); rt->has_event = TRUE; } @@ -485,7 +496,9 @@ rspamd_stat_cache_redis_learn (struct rspamd_task *task, if (redisAsyncCommand (rt->redis, rspamd_stat_cache_redis_set, rt, "HSET %s %s %d", rt->ctx->redis_object, h, flag) == REDIS_OK) { - rspamd_session_add_event (task->s, NULL, rspamd_redis_cache_fin, rt, rspamd_stat_cache_redis_quark ()); + rspamd_session_add_event (task->s, + rspamd_redis_cache_fin, rt, rspamd_stat_cache_redis_quark ()); + rt->item = rspamd_symbols_cache_get_cur_item (task); event_add (&rt->timeout_event, &tv); rt->has_event = TRUE; } |