From: Aki Tuomi Date: Tue, 6 Mar 2018 08:31:51 +0000 (+0200) Subject: config: Make local_name comparison faster X-Git-Tag: 2.2.35~10 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9ad5a54050c16609466b9ff0ddb10c4f00115948;p=thirdparty%2Fdovecot%2Fcore.git config: Make local_name comparison faster Based on patch by J. Nick Koston --- diff --git a/src/config/config-filter.c b/src/config/config-filter.c index 2805e9dbe0..058cba52d0 100644 --- a/src/config/config-filter.c +++ b/src/config/config-filter.c @@ -37,13 +37,14 @@ config_filter_match_local_name(const struct config_filter *mask, { /* Handle multiple names seperated 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,