diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-03-19 18:43:03 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2015-03-19 18:43:03 +0000 |
commit | 033d4b2d749fca44e4b067f9a5486a289b61a95e (patch) | |
tree | 2602350841e54234dd41fa30c318f1d1a5d3964e /src/libutil | |
parent | 7fb50e6f4c0c000c52ac927c7a95f5d3349a8b8b (diff) | |
download | rspamd-033d4b2d749fca44e4b067f9a5486a289b61a95e.tar.gz rspamd-033d4b2d749fca44e4b067f9a5486a289b61a95e.zip |
Use regexp hash functions for task re_cache.
Diffstat (limited to 'src/libutil')
-rw-r--r-- | src/libutil/regexp.c | 4 | ||||
-rw-r--r-- | src/libutil/regexp.h | 22 |
2 files changed, 24 insertions, 2 deletions
diff --git a/src/libutil/regexp.c b/src/libutil/regexp.c index b8bd4454c..bf1a1762d 100644 --- a/src/libutil/regexp.c +++ b/src/libutil/regexp.c @@ -436,7 +436,7 @@ rspamd_regexp_get_ud (rspamd_regexp_t *re) return re->ud; } -static gboolean +gboolean rspamd_regexp_equal (gconstpointer a, gconstpointer b) { const guchar *ia = a, *ib = b; @@ -444,7 +444,7 @@ rspamd_regexp_equal (gconstpointer a, gconstpointer b) return (memcmp (ia, ib, sizeof (regexp_id_t)) == 0); } -static guint32 +guint32 rspamd_regexp_hash (gconstpointer a) { const guchar *ia = a; diff --git a/src/libutil/regexp.h b/src/libutil/regexp.h index 3c08de71a..fc236c1b3 100644 --- a/src/libutil/regexp.h +++ b/src/libutil/regexp.h @@ -90,6 +90,13 @@ void rspamd_regexp_set_ud (rspamd_regexp_t *re, gpointer ud); gpointer rspamd_regexp_get_ud (rspamd_regexp_t *re); /** + * Get regexp ID suitable for hashing + * @param re + * @return + */ +gpointer rspamd_regexp_get_id (rspamd_regexp_t *re); + +/** * Get pattern for the specified regexp object * @param re * @return @@ -152,6 +159,21 @@ gboolean rspamd_regexp_cache_remove (struct rspamd_regexp_cache *cache, void rspamd_regexp_cache_destroy (struct rspamd_regexp_cache *cache); /** + * Return the value for regexp hash based on its ID + * @param a + * @return + */ +guint32 rspamd_regexp_hash (gconstpointer a); + +/** + * Compare two regexp objects based on theirs ID + * @param a + * @param b + * @return + */ +gboolean rspamd_regexp_equal (gconstpointer a, gconstpointer b); + +/** * Initialize superglobal regexp cache and library */ void rspamd_regexp_library_init (void); |