diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-04-27 11:10:54 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-04-27 11:11:47 +0100 |
commit | 3d38232f5f8ae22c8fe70312a5db35437878d7b9 (patch) | |
tree | f1d17341590b71b9e09918d5b9190c4fd63928b7 | |
parent | f5e29b134d6ce603efb00512506e147a0dd7fc53 (diff) | |
download | rspamd-0.8.tar.gz rspamd-0.8.zip |
Fix expiration for fuzzy hashes.rspamd-0.8
Issue: #267
Reported by: @moiseev
-rw-r--r-- | src/libserver/fuzzy_backend.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/libserver/fuzzy_backend.c b/src/libserver/fuzzy_backend.c index df35e0ccf..f88c5db27 100644 --- a/src/libserver/fuzzy_backend.c +++ b/src/libserver/fuzzy_backend.c @@ -719,20 +719,44 @@ gboolean rspamd_fuzzy_backend_sync (struct rspamd_fuzzy_backend *backend, gint64 expire) { gboolean ret = FALSE; + gint64 expire_lim, expired; + gint rc; + GError *err = NULL; /* Perform expire */ if (expire > 0) { - rspamd_fuzzy_backend_run_simple (RSPAMD_FUZZY_BACKEND_EXPIRE, - backend, NULL); - backend->expired += sqlite3_changes (backend->db); + expire_lim = time (NULL) - expire; + + if (expire_lim > 0) { + rc = rspamd_fuzzy_backend_run_stmt (backend, + RSPAMD_FUZZY_BACKEND_EXPIRE, expire_lim); + + if (rc == SQLITE_OK) { + expired = sqlite3_changes (backend->db); + + if (expired > 0) { + backend->expired += expired; + msg_info ("expired %L hashes", expired); + } + } + else { + msg_warn ("cannot execute expired statement: %s", + sqlite3_errmsg (backend->db)); + } + } + } ret = rspamd_fuzzy_backend_run_simple (RSPAMD_FUZZY_BACKEND_TRANSACTION_COMMIT, - backend, NULL); + backend, &err); if (ret) { ret = rspamd_fuzzy_backend_run_simple (RSPAMD_FUZZY_BACKEND_TRANSACTION_START, backend, NULL); } + else { + msg_warn ("cannot synchronise fuzzy backend: %e", err); + g_error_free (err); + } return ret; } |