Browse Source

Fix expiration for fuzzy hashes.

Issue:	#267
Reported by:	@moiseev
rspamd-0.8
Vsevolod Stakhov 9 years ago
parent
commit
3d38232f5f
1 changed files with 28 additions and 4 deletions
  1. 28
    4
      src/libserver/fuzzy_backend.c

+ 28
- 4
src/libserver/fuzzy_backend.c View File

rspamd_fuzzy_backend_sync (struct rspamd_fuzzy_backend *backend, gint64 expire) rspamd_fuzzy_backend_sync (struct rspamd_fuzzy_backend *backend, gint64 expire)
{ {
gboolean ret = FALSE; gboolean ret = FALSE;
gint64 expire_lim, expired;
gint rc;
GError *err = NULL;


/* Perform expire */ /* Perform expire */
if (expire > 0) { 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, ret = rspamd_fuzzy_backend_run_simple (RSPAMD_FUZZY_BACKEND_TRANSACTION_COMMIT,
backend, NULL);
backend, &err);


if (ret) { if (ret) {
ret = rspamd_fuzzy_backend_run_simple (RSPAMD_FUZZY_BACKEND_TRANSACTION_START, ret = rspamd_fuzzy_backend_run_simple (RSPAMD_FUZZY_BACKEND_TRANSACTION_START,
backend, NULL); backend, NULL);
} }
else {
msg_warn ("cannot synchronise fuzzy backend: %e", err);
g_error_free (err);
}


return ret; return ret;
} }

Loading…
Cancel
Save