Parcourir la source

Fix expiration for fuzzy hashes.

Issue:	#267
Reported by:	@moiseev
rspamd-0.8
Vsevolod Stakhov il y a 9 ans
Parent
révision
3d38232f5f
1 fichiers modifiés avec 28 ajouts et 4 suppressions
  1. 28
    4
      src/libserver/fuzzy_backend.c

+ 28
- 4
src/libserver/fuzzy_backend.c Voir le fichier

@@ -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;
}

Chargement…
Annuler
Enregistrer