From: Vsevolod Stakhov Date: Wed, 16 Dec 2015 15:03:21 +0000 (+0000) Subject: Store fuzzy backend id based on path to file X-Git-Tag: 1.1.0~274 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d414e0aad91f1999b19b7ea00b2aaf24f8ecc4c6;p=thirdparty%2Frspamd.git Store fuzzy backend id based on path to file --- diff --git a/src/libserver/fuzzy_backend.c b/src/libserver/fuzzy_backend.c index 4a59e367c0..d3a3d947bf 100644 --- a/src/libserver/fuzzy_backend.c +++ b/src/libserver/fuzzy_backend.c @@ -32,6 +32,7 @@ struct rspamd_fuzzy_backend { sqlite3 *db; char *path; + gchar id[MEMPOOL_UID_LEN]; gsize count; gsize expired; rspamd_mempool_t *pool; @@ -388,6 +389,10 @@ static struct rspamd_fuzzy_backend * rspamd_fuzzy_backend_open_db (const gchar *path, GError **err) { struct rspamd_fuzzy_backend *bk; + rspamd_cryptobox_hash_state_t st; + guchar hash_out[rspamd_cryptobox_HASHBYTES]; + + g_assert (path != NULL); bk = g_slice_alloc (sizeof (*bk)); bk->path = g_strdup (path); @@ -408,6 +413,13 @@ rspamd_fuzzy_backend_open_db (const gchar *path, GError **err) return NULL; } + /* Set id for the backend */ + rspamd_cryptobox_hash_init (&st, NULL, 0); + rspamd_cryptobox_hash_update (&st, path, strlen (path)); + rspamd_cryptobox_hash_final (&st, hash_out); + rspamd_snprintf (bk->id, sizeof (bk->id), "%xs", hash_out); + memcpy (bk->pool->tag.uid, bk->id, sizeof (bk->pool->tag.uid)); + return bk; } @@ -938,3 +950,9 @@ rspamd_fuzzy_backend_expired (struct rspamd_fuzzy_backend *backend) { return backend != NULL ? backend->expired : 0; } + +const gchar * +rspamd_fuzzy_backend_id (struct rspamd_fuzzy_backend *backend) +{ + return backend != NULL ? backend->id : 0; +} diff --git a/src/libserver/fuzzy_backend.h b/src/libserver/fuzzy_backend.h index 4439d7afa6..2e177e7af9 100644 --- a/src/libserver/fuzzy_backend.h +++ b/src/libserver/fuzzy_backend.h @@ -98,4 +98,6 @@ void rspamd_fuzzy_backend_close (struct rspamd_fuzzy_backend *backend); gsize rspamd_fuzzy_backend_count (struct rspamd_fuzzy_backend *backend); gsize rspamd_fuzzy_backend_expired (struct rspamd_fuzzy_backend *backend); +const gchar * rspamd_fuzzy_backend_id (struct rspamd_fuzzy_backend *backend); + #endif /* FUZZY_BACKEND_H_ */