]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Relax mailto processing with no TLD
authorVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 16 May 2024 15:05:59 +0000 (16:05 +0100)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 16 May 2024 15:05:59 +0000 (16:05 +0100)
src/libserver/url.c

index b0ece195ba886fa12a4fff7389eea32a8f45df80..137e5b73ce241d132cb119287ad2523feb0d7f05 100644 (file)
@@ -559,7 +559,6 @@ void rspamd_url_init(const char *tld_file)
                                                                                                           sizeof(struct url_matcher), 13000);
                url_scanner->search_trie_full = rspamd_multipattern_create_sized(13000,
                                                                                                                                                 RSPAMD_MULTIPATTERN_ICASE | RSPAMD_MULTIPATTERN_UTF8);
-               url_scanner->has_tld_file = true;
        }
        else {
                url_scanner->matchers_full = NULL;
@@ -572,6 +571,10 @@ void rspamd_url_init(const char *tld_file)
 
        if (tld_file != NULL) {
                ret = rspamd_url_parse_tld_file(tld_file, url_scanner);
+
+               if (ret) {
+                       url_scanner->has_tld_file = true;
+               }
        }
 
        if (url_scanner->matchers_full && url_scanner->matchers_full->len > 1000) {
@@ -2525,8 +2528,13 @@ rspamd_url_parse(struct rspamd_url *uri,
                                        }
                                }
                                else {
-                                       /* Ignore IP like domains for mailto, as it is really never supported */
-                                       return URI_ERRNO_TLD_MISSING;
+                                       if (url_scanner->has_tld_file) {
+                                               /* Ignore IP like domains for mailto, as it is really never supported */
+                                               return URI_ERRNO_TLD_MISSING;
+                                       }
+                                       else {
+                                               uri->flags |= RSPAMD_URL_FLAG_NO_TLD;
+                                       }
                                }
                        }
                }