]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
config: Make local_name comparison faster
authorAki Tuomi <aki.tuomi@dovecot.fi>
Tue, 6 Mar 2018 08:31:51 +0000 (10:31 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 12 Mar 2018 15:20:28 +0000 (17:20 +0200)
Based on patch by J. Nick Koston <nick@cpanel.net>

src/config/config-filter.c

index 6f38b3d53b824ef10ab1240d0231d87cbd64d1f3..9e238dc6868d2d9a5bf52451c15d6b9092ac82b0 100644 (file)
@@ -37,13 +37,14 @@ config_filter_match_local_name(const struct config_filter *mask,
 {
        /* Handle multiple names separated by spaces in local_name
           * Ex: local_name "mail.domain.tld domain.tld mx.domain.tld" { ... } */
-       const char *const *local_name = t_strsplit_spaces(mask->local_name, " ");
-
-       for (; *local_name != NULL; local_name++) {
-               if (dns_match_wildcard(filter_local_name, *local_name) == 0)
+       const char *ptr, *local_name = mask->local_name;
+       while((ptr = strchr(local_name, ' ')) != NULL) {
+               if (dns_match_wildcard(filter_local_name,
+                   t_strdup_until(local_name, ptr)) == 0)
                        return TRUE;
+               local_name = ptr+1;
        }
-       return FALSE;
+       return dns_match_wildcard(filter_local_name, local_name) == 0;
 }
 
 static bool config_filter_match_rest(const struct config_filter *mask,