aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/surbl.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/plugins/surbl.c b/src/plugins/surbl.c
index 39dfc2894..428e2902e 100644
--- a/src/plugins/surbl.c
+++ b/src/plugins/surbl.c
@@ -1069,6 +1069,7 @@ surbl_tree_url_callback (gpointer key, gpointer value, void *data)
rspamd_regexp_t *re;
gint idx = 0, state = 0;
ac_trie_pat_t *pat;
+ gboolean found = FALSE;
task = param->task;
debug_task ("check url %s", struri (url));
@@ -1089,8 +1090,19 @@ surbl_tree_url_callback (gpointer key, gpointer value, void *data)
re = g_hash_table_lookup (
surbl_module_ctx->redirector_hosts,
pat->ptr);
- if (re == NULL || rspamd_regexp_search (re, url->string, 0,
+ if (re == NULL) {
+ /* Perform exact match */
+ if (pat->len == url->hostlen && memcmp (pat->ptr,
+ url->host, pat->len) == 0) {
+ found = TRUE;
+ }
+ }
+ else if (rspamd_regexp_search (re, url->string, 0,
NULL, NULL, TRUE)) {
+ found = TRUE;
+ }
+
+ if (found) {
if (surbl_module_ctx->redirector_symbol != NULL) {
rspamd_task_insert_result (param->task,
surbl_module_ctx->redirector_symbol,