From 9a28092a164e8ddb93153e18972cab5a6c049ff8 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 5 Jan 2017 12:04:31 +0000 Subject: [PATCH] [Fix] Fix fuzzy hashes count --- src/fuzzy_storage.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/fuzzy_storage.c b/src/fuzzy_storage.c index 1e2826c23..f7549ac2f 100644 --- a/src/fuzzy_storage.c +++ b/src/fuzzy_storage.c @@ -124,6 +124,8 @@ struct rspamd_fuzzy_storage_ctx { struct event_base *ev_base; gint peer_fd; struct event peer_ev; + struct event stat_ev; + struct timeval stat_tv; /* Local keypair */ struct rspamd_cryptobox_keypair *default_keypair; /* Bad clash, need for parse keypair */ struct fuzzy_key *default_key; @@ -447,6 +449,25 @@ fuzzy_update_version_callback (guint64 ver, void *ud) (const char *)ud, (gint)ver); } +static void +fuzzy_stat_count_callback (guint64 count, void *ud) +{ + struct rspamd_fuzzy_storage_ctx *ctx = ud; + + event_add (&ctx->stat_ev, &ctx->stat_tv); + ctx->stat.fuzzy_hashes = count; +} + +static void +rspamd_fuzzy_stat_callback (gint fd, gshort what, gpointer ud) +{ + struct rspamd_fuzzy_storage_ctx *ctx = ud; + + event_del (&ctx->stat_ev); + rspamd_fuzzy_backend_count (ctx->backend, local_db_name, + fuzzy_stat_count_callback, ctx); +} + static void rspamd_fuzzy_updates_cb (gboolean success, void *ud) { @@ -2292,6 +2313,11 @@ start_fuzzy (struct rspamd_worker *worker) rspamd_fuzzy_storage_periodic_callback, ctx); } + double_to_tv (ctx->sync_timeout, &ctx->stat_tv); + event_set (&ctx->stat_ev, -1, EV_TIMEOUT, rspamd_fuzzy_stat_callback, ctx); + event_base_set (ctx->ev_base, &ctx->stat_ev); + event_add (&ctx->stat_ev, &ctx->stat_tv); + if (ctx->mirrors && ctx->mirrors->len != 0) { if (ctx->sync_keypair == NULL) { GString *pk_str = NULL; -- 2.39.5