gboolean encrypted_only;
struct rspamd_keypair_cache *keypair_cache;
rspamd_lru_hash_t *errors_ips;
- struct rspamd_fuzzy_backend *backend;
+ struct rspamd_fuzzy_backend_sqlite *backend;
GQueue *updates_pending;
struct rspamd_dns_resolver *resolver;
struct rspamd_config *cfg;
guchar nm[rspamd_cryptobox_MAX_NMBYTES];
};
-struct fuzzy_peer_cmd {
- gboolean is_shingle;
- union {
- struct rspamd_fuzzy_cmd normal;
- struct rspamd_fuzzy_shingle_cmd shingle;
- } cmd;
-};
-
struct fuzzy_peer_request {
struct event io_ev;
struct fuzzy_peer_cmd cmd;
const gchar *p;
rspamd_fstring_t *reply;
- rev = rspamd_fuzzy_backend_version (ctx->backend, local_db_name);
+ rev = rspamd_fuzzy_backend_sqlite_version (ctx->backend, local_db_name);
rev = GUINT32_TO_LE (rev);
len = sizeof (guint32) * 2; /* revision + last chunk */
if (ctx->updates_pending &&
g_queue_get_length (ctx->updates_pending) > 0 &&
- rspamd_fuzzy_backend_prepare_update (ctx->backend, source)) {
+ rspamd_fuzzy_backend_sqlite_prepare_update (ctx->backend, source)) {
cur = ctx->updates_pending->head;
while (cur) {
}
if (cmd->cmd == FUZZY_WRITE) {
- rspamd_fuzzy_backend_add (ctx->backend, ptr);
+ rspamd_fuzzy_backend_sqlite_add (ctx->backend, ptr);
}
else {
- rspamd_fuzzy_backend_del (ctx->backend, ptr);
+ rspamd_fuzzy_backend_sqlite_del (ctx->backend, ptr);
}
nupdates++;
cur = g_list_next (cur);
}
- if (rspamd_fuzzy_backend_finish_update (ctx->backend, source, nupdates > 0)) {
- ctx->stat.fuzzy_hashes = rspamd_fuzzy_backend_count (ctx->backend);
+ if (rspamd_fuzzy_backend_sqlite_finish_update (ctx->backend, source, nupdates > 0)) {
+ ctx->stat.fuzzy_hashes = rspamd_fuzzy_backend_sqlite_count (ctx->backend);
if (nupdates > 0) {
for (i = 0; i < ctx->mirrors->len; i ++) {
g_queue_clear (ctx->updates_pending);
msg_info ("updated fuzzy storage: %ud updates processed, version: %d",
- nupdates, rspamd_fuzzy_backend_version (ctx->backend, source));
+ nupdates, rspamd_fuzzy_backend_sqlite_version (ctx->backend, source));
}
else {
msg_err ("cannot commit update transaction to fuzzy backend, "
result.flag = cmd->flag;
if (cmd->cmd == FUZZY_CHECK) {
- result = rspamd_fuzzy_backend_check (session->ctx->backend, cmd,
+ result = rspamd_fuzzy_backend_sqlite_check (session->ctx->backend, cmd,
session->ctx->expire);
}
else if (cmd->cmd == FUZZY_STAT) {
result.prob = 1.0;
result.value = 0;
- result.flag = rspamd_fuzzy_backend_count (session->ctx->backend);
+ result.flag = rspamd_fuzzy_backend_sqlite_count (session->ctx->backend);
}
else {
if (rspamd_fuzzy_check_client (session)) {
if (remain > sizeof (gint32) * 2) {
memcpy (&revision, p, sizeof (gint32));
revision = GINT32_TO_LE (revision);
- our_rev = rspamd_fuzzy_backend_version (session->ctx->backend, src);
+ our_rev = rspamd_fuzzy_backend_sqlite_version (session->ctx->backend, src);
if (revision <= our_rev) {
msg_err_fuzzy_update ("remote revision: %d is older than ours: %d, "
if (ctx->backend) {
rspamd_fuzzy_process_updates_queue (ctx, local_db_name);
/* Call backend sync */
- old_expired = rspamd_fuzzy_backend_expired (ctx->backend);
- rspamd_fuzzy_backend_sync (ctx->backend, ctx->expire, TRUE);
- new_expired = rspamd_fuzzy_backend_expired (ctx->backend);
+ old_expired = rspamd_fuzzy_backend_sqlite_expired (ctx->backend);
+ rspamd_fuzzy_backend_sqlite_sync (ctx->backend, ctx->expire, TRUE);
+ new_expired = rspamd_fuzzy_backend_sqlite_expired (ctx->backend);
if (old_expired < new_expired) {
ctx->stat.fuzzy_hashes_expired += new_expired - old_expired;
if (ctx->backend) {
rspamd_fuzzy_process_updates_queue (ctx, local_db_name);
/* Call backend sync */
- old_expired = rspamd_fuzzy_backend_expired (ctx->backend);
- rspamd_fuzzy_backend_sync (ctx->backend, ctx->expire, TRUE);
- new_expired = rspamd_fuzzy_backend_expired (ctx->backend);
+ old_expired = rspamd_fuzzy_backend_sqlite_expired (ctx->backend);
+ rspamd_fuzzy_backend_sqlite_sync (ctx->backend, ctx->expire, TRUE);
+ new_expired = rspamd_fuzzy_backend_sqlite_expired (ctx->backend);
if (old_expired < new_expired) {
ctx->stat.fuzzy_hashes_expired += new_expired - old_expired;
if (ctx->backend) {
/* Close backend and reopen it one more time */
- rspamd_fuzzy_backend_close (ctx->backend);
+ rspamd_fuzzy_backend_sqlite_close (ctx->backend);
}
memset (&rep, 0, sizeof (rep));
rep.type = RSPAMD_CONTROL_RELOAD;
- if ((ctx->backend = rspamd_fuzzy_backend_open (ctx->hashfile,
+ if ((ctx->backend = rspamd_fuzzy_backend_sqlite_open (ctx->hashfile,
TRUE,
&err)) == NULL) {
msg_err ("cannot open backend after reload: %e", err);
rep.reply.fuzzy_stat.status = 0;
memcpy (rep.reply.fuzzy_stat.storage_id,
- rspamd_fuzzy_backend_id (ctx->backend),
+ rspamd_fuzzy_sqlite_backend_id (ctx->backend),
sizeof (rep.reply.fuzzy_stat.storage_id));
obj = rspamd_fuzzy_stat_to_ucl (ctx, TRUE);
/*
* Open DB and perform VACUUM
*/
- if ((ctx->backend = rspamd_fuzzy_backend_open (ctx->hashfile, TRUE, &err)) == NULL) {
+ if ((ctx->backend = rspamd_fuzzy_backend_sqlite_open (ctx->hashfile, TRUE, &err)) == NULL) {
msg_err ("cannot open backend: %e", err);
g_error_free (err);
exit (EXIT_SUCCESS);
}
- ctx->stat.fuzzy_hashes = rspamd_fuzzy_backend_count (ctx->backend);
+ ctx->stat.fuzzy_hashes = rspamd_fuzzy_backend_sqlite_count (ctx->backend);
if (ctx->keypair_cache_size > 0) {
/* Create keypairs cache */
}
if (worker->index == 0) {
- rspamd_fuzzy_backend_sync (ctx->backend, ctx->expire, TRUE);
+ rspamd_fuzzy_backend_sqlite_sync (ctx->backend, ctx->expire, TRUE);
}
if (ctx->mirrors && ctx->mirrors->len != 0) {
if (worker->index == 0) {
rspamd_fuzzy_process_updates_queue (ctx, local_db_name);
- rspamd_fuzzy_backend_sync (ctx->backend, ctx->expire, TRUE);
+ rspamd_fuzzy_backend_sqlite_sync (ctx->backend, ctx->expire, TRUE);
}
- rspamd_fuzzy_backend_close (ctx->backend);
+ rspamd_fuzzy_backend_sqlite_close (ctx->backend);
rspamd_log_close (worker->srv->logger);
if (ctx->peer_fd != -1) {
#include "config.h"
#include "fuzzy_backend.h"
#include "fuzzy_backend_sqlite.h"
+
+enum rspamd_fuzzy_backend_type {
+ RSPAMD_FUZZY_BACKEND_SQLITE = 0,
+ // RSPAMD_FUZZY_BACKEND_REDIS
+};
+
+void* rspamd_fuzzy_backend_init_sqlite (struct rspamd_fuzzy_backend *bk,
+ const ucl_object_t *obj, GError **err);
+void rspamd_fuzzy_backend_check_sqlite (struct rspamd_fuzzy_backend *bk,
+ const struct rspamd_fuzzy_cmd *cmd,
+ rspamd_fuzzy_check_cb cb, void *ud,
+ void *subr_ud);
+void rspamd_fuzzy_backend_update_sqlite (struct rspamd_fuzzy_backend *bk,
+ GQueue *updates, const gchar *src,
+ rspamd_fuzzy_update_cb cb, void *ud,
+ void *subr_ud);
+void rspamd_fuzzy_backend_count_sqlite (struct rspamd_fuzzy_backend *bk,
+ rspamd_fuzzy_count_cb cb, void *ud,
+ void *subr_ud);
+void rspamd_fuzzy_backend_version_sqlite (struct rspamd_fuzzy_backend *bk,
+ const gchar *version,
+ rspamd_fuzzy_version_cb cb, void *ud,
+ void *subr_ud);
+
+struct rspamd_fuzzy_backend_subr {
+ void* (*init) (struct rspamd_fuzzy_backend *bk, const ucl_object_t *obj,
+ GError **err);
+ void (*check) (struct rspamd_fuzzy_backend *bk,
+ const struct rspamd_fuzzy_cmd *cmd,
+ rspamd_fuzzy_check_cb cb, void *ud,
+ void *subr_ud);
+ void (*update) (struct rspamd_fuzzy_backend *bk,
+ GQueue *updates, const gchar *src,
+ rspamd_fuzzy_update_cb cb, void *ud,
+ void *subr_ud);
+ void (*count) (struct rspamd_fuzzy_backend *bk,
+ rspamd_fuzzy_count_cb cb, void *ud,
+ void *subr_ud);
+ void (*version) (struct rspamd_fuzzy_backend *bk,
+ const gchar *version,
+ rspamd_fuzzy_version_cb cb, void *ud,
+ void *subr_ud);
+};
+
+static struct rspamd_fuzzy_backend_subr fuzzy_subrs[] = {
+ [RSPAMD_FUZZY_BACKEND_SQLITE] = {
+ .init = rspamd_fuzzy_backend_init_sqlite,
+ .check = rspamd_fuzzy_backend_check_sqlite,
+ .update = rspamd_fuzzy_backend_update_sqlite,
+ .count = rspamd_fuzzy_backend_count_sqlite,
+ .version = rspamd_fuzzy_backend_version_sqlite
+ }
+};
+
+struct rspamd_fuzzy_backend {
+ enum rspamd_fuzzy_backend_type type;
+ gdouble expire;
+ struct event_base *ev_base;
+ const struct rspamd_fuzzy_backend_subr *subr;
+ void *subr_ud;
+};
+
+struct rspamd_fuzzy_backend *
+rspamd_fuzzy_backend_create (struct event_base *ev_base,
+ const ucl_object_t *config, GError **err)
+{
+
+}
+
+
+void
+rspamd_fuzzy_backend_check (struct rspamd_fuzzy_backend *bk,
+ const struct rspamd_fuzzy_cmd *cmd,
+ rspamd_fuzzy_check_cb cb, void *ud);
+
+void
+rspamd_fuzzy_backend_process_updates (struct rspamd_fuzzy_backend *bk,
+ GQueue *updates, const gchar *src, rspamd_fuzzy_update_cb cb,
+ void *ud);
+
+
+void
+rspamd_fuzzy_backend_count (struct rspamd_fuzzy_backend *bk,
+ rspamd_fuzzy_count_cb cb, void *ud);
+
+void
+rspamd_fuzzy_backend_version (struct rspamd_fuzzy_backend *bk,
+ const gchar *src,
+ rspamd_fuzzy_version_cb cb, void *ud);
#include "config.h"
#include "rspamd.h"
#include "fuzzy_backend.h"
+#include "fuzzy_backend_sqlite.h"
#include "unix-std.h"
#include <sqlite3.h>
#include "libutil/sqlite_utils.h"
-struct rspamd_fuzzy_backend {
+struct rspamd_fuzzy_backend_sqlite {
sqlite3 *db;
char *path;
gchar id[MEMPOOL_UID_LEN];
}
static gboolean
-rspamd_fuzzy_backend_prepare_stmts (struct rspamd_fuzzy_backend *bk, GError **err)
+rspamd_fuzzy_backend_sqlite_prepare_stmts (struct rspamd_fuzzy_backend_sqlite *bk, GError **err)
{
int i;
}
static int
-rspamd_fuzzy_backend_cleanup_stmt (struct rspamd_fuzzy_backend *backend,
+rspamd_fuzzy_backend_sqlite_cleanup_stmt (struct rspamd_fuzzy_backend_sqlite *backend,
int idx)
{
sqlite3_stmt *stmt;
}
static int
-rspamd_fuzzy_backend_run_stmt (struct rspamd_fuzzy_backend *backend,
+rspamd_fuzzy_backend_sqlite_run_stmt (struct rspamd_fuzzy_backend_sqlite *backend,
gboolean auto_cleanup,
int idx, ...)
{
}
static void
-rspamd_fuzzy_backend_close_stmts (struct rspamd_fuzzy_backend *bk)
+rspamd_fuzzy_backend_sqlite_close_stmts (struct rspamd_fuzzy_backend_sqlite *bk)
{
int i;
}
static gboolean
-rspamd_fuzzy_backend_run_sql (const gchar *sql, struct rspamd_fuzzy_backend *bk,
+rspamd_fuzzy_backend_sqlite_run_sql (const gchar *sql, struct rspamd_fuzzy_backend_sqlite *bk,
GError **err)
{
guint retries = 0;
return TRUE;
}
-static struct rspamd_fuzzy_backend *
-rspamd_fuzzy_backend_open_db (const gchar *path, GError **err)
+static struct rspamd_fuzzy_backend_sqlite *
+rspamd_fuzzy_backend_sqlite_open_db (const gchar *path, GError **err)
{
- struct rspamd_fuzzy_backend *bk;
+ struct rspamd_fuzzy_backend_sqlite *bk;
rspamd_cryptobox_hash_state_t st;
guchar hash_out[rspamd_cryptobox_HASHBYTES];
create_tables_sql, 1, err);
if (bk->db == NULL) {
- rspamd_fuzzy_backend_close (bk);
+ rspamd_fuzzy_backend_sqlite_close (bk);
return NULL;
}
- if (!rspamd_fuzzy_backend_prepare_stmts (bk, err)) {
- rspamd_fuzzy_backend_close (bk);
+ if (!rspamd_fuzzy_backend_sqlite_prepare_stmts (bk, err)) {
+ rspamd_fuzzy_backend_sqlite_close (bk);
return NULL;
}
return bk;
}
-struct rspamd_fuzzy_backend *
-rspamd_fuzzy_backend_open (const gchar *path,
+struct rspamd_fuzzy_backend_sqlite *
+rspamd_fuzzy_backend_sqlite_open (const gchar *path,
gboolean vacuum,
GError **err)
{
- struct rspamd_fuzzy_backend *backend;
+ struct rspamd_fuzzy_backend_sqlite *backend;
if (path == NULL) {
g_set_error (err, rspamd_fuzzy_backend_quark (),
}
/* Open database */
- if ((backend = rspamd_fuzzy_backend_open_db (path, err)) == NULL) {
+ if ((backend = rspamd_fuzzy_backend_sqlite_open_db (path, err)) == NULL) {
return NULL;
}
- if (rspamd_fuzzy_backend_run_stmt (backend, FALSE, RSPAMD_FUZZY_BACKEND_COUNT)
+ if (rspamd_fuzzy_backend_sqlite_run_stmt (backend, FALSE, RSPAMD_FUZZY_BACKEND_COUNT)
== SQLITE_OK) {
backend->count = sqlite3_column_int64 (
prepared_stmts[RSPAMD_FUZZY_BACKEND_COUNT].stmt, 0);
}
- rspamd_fuzzy_backend_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_COUNT);
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_COUNT);
return backend;
}
static gint
-rspamd_fuzzy_backend_int64_cmp (const void *a, const void *b)
+rspamd_fuzzy_backend_sqlite_int64_cmp (const void *a, const void *b)
{
gint64 ia = *(gint64 *)a, ib = *(gint64 *)b;
}
struct rspamd_fuzzy_reply
-rspamd_fuzzy_backend_check (struct rspamd_fuzzy_backend *backend,
+rspamd_fuzzy_backend_sqlite_check (struct rspamd_fuzzy_backend_sqlite *backend,
const struct rspamd_fuzzy_cmd *cmd, gint64 expire)
{
struct rspamd_fuzzy_reply rep = {0, 0, 0, 0.0};
}
/* Try direct match first of all */
- rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_START);
- rc = rspamd_fuzzy_backend_run_stmt (backend, FALSE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, FALSE,
RSPAMD_FUZZY_BACKEND_CHECK,
cmd->digest);
else if (cmd->shingles_count > 0) {
/* Fuzzy match */
- rspamd_fuzzy_backend_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
shcmd = (const struct rspamd_fuzzy_shingle_cmd *)cmd;
for (i = 0; i < RSPAMD_SHINGLE_SIZE; i ++) {
- rc = rspamd_fuzzy_backend_run_stmt (backend, FALSE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, FALSE,
RSPAMD_FUZZY_BACKEND_CHECK_SHINGLE,
shcmd->sgl.hashes[i], i);
if (rc == SQLITE_OK) {
shcmd->sgl.hashes[i], rc);
}
- rspamd_fuzzy_backend_cleanup_stmt (backend,
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend,
RSPAMD_FUZZY_BACKEND_CHECK_SHINGLE);
qsort (shingle_values, RSPAMD_SHINGLE_SIZE, sizeof (gint64),
- rspamd_fuzzy_backend_int64_cmp);
+ rspamd_fuzzy_backend_sqlite_int64_cmp);
sel_id = -1;
cur_id = -1;
cur_cnt = 0;
msg_debug_fuzzy_backend (
"found fuzzy hash with probability %.2f",
rep.prob);
- rc = rspamd_fuzzy_backend_run_stmt (backend, FALSE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, FALSE,
RSPAMD_FUZZY_BACKEND_GET_DIGEST_BY_ID, sel_id);
if (rc == SQLITE_OK) {
timestamp = sqlite3_column_int64 (
rep.value = 0;
}
- rspamd_fuzzy_backend_cleanup_stmt (backend,
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend,
RSPAMD_FUZZY_BACKEND_GET_DIGEST_BY_ID);
}
}
- rspamd_fuzzy_backend_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
- rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
+ rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_COMMIT);
return rep;
}
gboolean
-rspamd_fuzzy_backend_prepare_update (struct rspamd_fuzzy_backend *backend,
+rspamd_fuzzy_backend_sqlite_prepare_update (struct rspamd_fuzzy_backend_sqlite *backend,
const gchar *source)
{
gint rc;
return FALSE;
}
- rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_START);
if (rc != SQLITE_OK) {
}
gboolean
-rspamd_fuzzy_backend_add (struct rspamd_fuzzy_backend *backend,
+rspamd_fuzzy_backend_sqlite_add (struct rspamd_fuzzy_backend_sqlite *backend,
const struct rspamd_fuzzy_cmd *cmd)
{
int rc, i;
return FALSE;
}
- rc = rspamd_fuzzy_backend_run_stmt (backend, FALSE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, FALSE,
RSPAMD_FUZZY_BACKEND_CHECK,
cmd->digest);
flag = sqlite3_column_int64 (
prepared_stmts[RSPAMD_FUZZY_BACKEND_CHECK].stmt,
2);
- rspamd_fuzzy_backend_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
if (flag == cmd->flag) {
/* We need to increase weight */
- rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_UPDATE,
(gint64) cmd->value,
cmd->digest);
else {
/* We need to relearn actually */
- rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_UPDATE_FLAG,
(gint64) cmd->value,
(gint64) cmd->flag,
}
}
else {
- rspamd_fuzzy_backend_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
- rc = rspamd_fuzzy_backend_run_stmt (backend, FALSE,
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, FALSE,
RSPAMD_FUZZY_BACKEND_INSERT,
(gint) cmd->flag,
cmd->digest,
shcmd = (const struct rspamd_fuzzy_shingle_cmd *) cmd;
for (i = 0; i < RSPAMD_SHINGLE_SIZE; i++) {
- rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_INSERT_SHINGLE,
shcmd->sgl.hashes[i], (gint64)i, id);
msg_debug_fuzzy_backend ("add shingle %d -> %L: %L",
sqlite3_errmsg (backend->db));
}
- rspamd_fuzzy_backend_cleanup_stmt (backend,
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend,
RSPAMD_FUZZY_BACKEND_INSERT);
}
}
gboolean
-rspamd_fuzzy_backend_finish_update (struct rspamd_fuzzy_backend *backend,
+rspamd_fuzzy_backend_sqlite_finish_update (struct rspamd_fuzzy_backend_sqlite *backend,
const gchar *source, gboolean version_bump)
{
gint rc = SQLITE_OK, wal_frames, wal_checkpointed, ver;
/* Get and update version */
if (version_bump) {
- ver = rspamd_fuzzy_backend_version (backend, source);
+ ver = rspamd_fuzzy_backend_sqlite_version (backend, source);
++ver;
- rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_SET_VERSION,
(gint64)ver, (gint64)time (NULL), source);
}
if (rc == SQLITE_OK) {
- rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_COMMIT);
if (rc != SQLITE_OK) {
msg_warn_fuzzy_backend ("cannot commit updates: %s",
sqlite3_errmsg (backend->db));
- rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_ROLLBACK);
return FALSE;
}
else {
msg_warn_fuzzy_backend ("cannot update version for %s: %s", source,
sqlite3_errmsg (backend->db));
- rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_ROLLBACK);
return FALSE;
}
}
gboolean
-rspamd_fuzzy_backend_del (struct rspamd_fuzzy_backend *backend,
+rspamd_fuzzy_backend_sqlite_del (struct rspamd_fuzzy_backend_sqlite *backend,
const struct rspamd_fuzzy_cmd *cmd)
{
int rc = -1;
return FALSE;
}
- rc = rspamd_fuzzy_backend_run_stmt (backend, FALSE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, FALSE,
RSPAMD_FUZZY_BACKEND_CHECK,
cmd->digest);
if (rc == SQLITE_OK) {
- rspamd_fuzzy_backend_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
- rc = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_DELETE,
cmd->digest);
if (rc != SQLITE_OK) {
}
else {
/* Hash is missing */
- rspamd_fuzzy_backend_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_CHECK);
}
return (rc == SQLITE_OK);
}
gboolean
-rspamd_fuzzy_backend_sync (struct rspamd_fuzzy_backend *backend,
+rspamd_fuzzy_backend_sqlite_sync (struct rspamd_fuzzy_backend_sqlite *backend,
gint64 expire,
gboolean clean_orphaned)
{
expire_lim = time (NULL) - expire;
if (expire_lim > 0) {
- ret = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ ret = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_START);
if (ret == SQLITE_OK) {
- rc = rspamd_fuzzy_backend_run_stmt (backend, FALSE,
+ rc = rspamd_fuzzy_backend_sqlite_run_stmt (backend, FALSE,
RSPAMD_FUZZY_BACKEND_EXPIRE, expire_lim, max_changes);
if (rc == SQLITE_OK) {
sqlite3_errmsg (backend->db));
}
- rspamd_fuzzy_backend_cleanup_stmt (backend,
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend,
RSPAMD_FUZZY_BACKEND_EXPIRE);
- ret = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ ret = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_COMMIT);
if (ret != SQLITE_OK) {
- rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_ROLLBACK);
}
}
/* Cleanup database */
if (clean_orphaned) {
- ret = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ ret = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_START);
if (ret == SQLITE_OK) {
pelt = &g_array_index (orphaned,
struct orphaned_shingle_elt,
i);
- rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_DELETE_ORPHANED,
pelt->value, pelt->number);
}
g_array_free (orphaned, TRUE);
}
- ret = rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ ret = rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_COMMIT);
if (ret == SQLITE_OK) {
msg_warn_fuzzy_backend (
"cannot synchronize fuzzy backend: %e",
err);
- rspamd_fuzzy_backend_run_stmt (backend, TRUE,
+ rspamd_fuzzy_backend_sqlite_run_stmt (backend, TRUE,
RSPAMD_FUZZY_BACKEND_TRANSACTION_ROLLBACK);
}
}
void
-rspamd_fuzzy_backend_close (struct rspamd_fuzzy_backend *backend)
+rspamd_fuzzy_backend_sqlite_close (struct rspamd_fuzzy_backend_sqlite *backend)
{
if (backend != NULL) {
if (backend->db != NULL) {
- rspamd_fuzzy_backend_close_stmts (backend);
+ rspamd_fuzzy_backend_sqlite_close_stmts (backend);
sqlite3_close (backend->db);
}
gsize
-rspamd_fuzzy_backend_count (struct rspamd_fuzzy_backend *backend)
+rspamd_fuzzy_backend_sqlite_count (struct rspamd_fuzzy_backend_sqlite *backend)
{
if (backend) {
- if (rspamd_fuzzy_backend_run_stmt (backend, FALSE,
+ if (rspamd_fuzzy_backend_sqlite_run_stmt (backend, FALSE,
RSPAMD_FUZZY_BACKEND_COUNT) == SQLITE_OK) {
backend->count = sqlite3_column_int64 (
prepared_stmts[RSPAMD_FUZZY_BACKEND_COUNT].stmt, 0);
}
- rspamd_fuzzy_backend_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_COUNT);
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_COUNT);
return backend->count;
}
}
gint
-rspamd_fuzzy_backend_version (struct rspamd_fuzzy_backend *backend,
+rspamd_fuzzy_backend_sqlite_version (struct rspamd_fuzzy_backend_sqlite *backend,
const gchar *source)
{
gint ret = -1;
if (backend) {
- if (rspamd_fuzzy_backend_run_stmt (backend, FALSE,
+ if (rspamd_fuzzy_backend_sqlite_run_stmt (backend, FALSE,
RSPAMD_FUZZY_BACKEND_VERSION, source) == SQLITE_OK) {
ret = sqlite3_column_int64 (
prepared_stmts[RSPAMD_FUZZY_BACKEND_VERSION].stmt, 0);
}
- rspamd_fuzzy_backend_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_VERSION);
+ rspamd_fuzzy_backend_sqlite_cleanup_stmt (backend, RSPAMD_FUZZY_BACKEND_VERSION);
}
return ret;
}
gsize
-rspamd_fuzzy_backend_expired (struct rspamd_fuzzy_backend *backend)
+rspamd_fuzzy_backend_sqlite_expired (struct rspamd_fuzzy_backend_sqlite *backend)
{
return backend != NULL ? backend->expired : 0;
}
const gchar *
-rspamd_fuzzy_backend_id (struct rspamd_fuzzy_backend *backend)
+rspamd_fuzzy_sqlite_backend_id (struct rspamd_fuzzy_backend_sqlite *backend)
{
return backend != NULL ? backend->id : 0;
}