aboutsummaryrefslogtreecommitdiffstats
path: root/src/libserver/url.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2016-08-14 12:31:48 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2016-08-14 12:31:48 +0100
commitaf1fdc6446629d4c9325c63c43966ce08ba96725 (patch)
tree6ce484660b88064c246279348fa0e16ea70bbda5 /src/libserver/url.c
parentc62c625bf0af590f73c7e3c2e44ecee6699d97ed (diff)
downloadrspamd-af1fdc6446629d4c9325c63c43966ce08ba96725.tar.gz
rspamd-af1fdc6446629d4c9325c63c43966ce08ba96725.zip
[Fix] Fix finding tld in util.get_tld
Diffstat (limited to 'src/libserver/url.c')
-rw-r--r--src/libserver/url.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/libserver/url.c b/src/libserver/url.c
index 83c0a69ea..cc6cfbb3a 100644
--- a/src/libserver/url.c
+++ b/src/libserver/url.c
@@ -1648,11 +1648,13 @@ rspamd_tld_trie_find_callback (struct rspamd_multipattern *mp,
}
if (ndots == 0 || p == start - 1) {
- cbdata->out->begin = pos;
- cbdata->out->len = cbdata->begin + cbdata->len - pos;
+ if (cbdata->begin + cbdata->len - pos > cbdata->out->len) {
+ cbdata->out->begin = pos;
+ cbdata->out->len = cbdata->begin + cbdata->len - pos;
+ }
}
- return 1;
+ return 0;
}
gboolean
@@ -1667,13 +1669,16 @@ rspamd_url_find_tld (const gchar *in, gsize inlen, rspamd_ftok_t *out)
cbdata.begin = in;
cbdata.len = inlen;
cbdata.out = out;
+ out->len = 0;
- if (rspamd_multipattern_lookup (url_scanner->search_trie, in, inlen,
- rspamd_tld_trie_find_callback, &cbdata, NULL) == 0) {
- return FALSE;
+ rspamd_multipattern_lookup (url_scanner->search_trie, in, inlen,
+ rspamd_tld_trie_find_callback, &cbdata, NULL);
+
+ if (out->len > 0) {
+ return TRUE;
}
- return TRUE;
+ return FALSE;
}
static const gchar url_braces[] = {