aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-04-27 11:10:54 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-04-27 11:11:47 +0100
commit3d38232f5f8ae22c8fe70312a5db35437878d7b9 (patch)
treef1d17341590b71b9e09918d5b9190c4fd63928b7
parentf5e29b134d6ce603efb00512506e147a0dd7fc53 (diff)
downloadrspamd-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.c32
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;
}