diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-08-14 12:31:48 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2016-08-14 12:31:48 +0100 |
commit | af1fdc6446629d4c9325c63c43966ce08ba96725 (patch) | |
tree | 6ce484660b88064c246279348fa0e16ea70bbda5 /src/libserver/url.c | |
parent | c62c625bf0af590f73c7e3c2e44ecee6699d97ed (diff) | |
download | rspamd-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.c | 19 |
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[] = { |