changeset 22894:9d24918492bb

config: Make local_name comparison faster Based on patch by J. Nick Koston <nick@cpanel.net>
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Tue, 06 Mar 2018 10:31:51 +0200
parents f03ca15a9bf1
children 7c9209747a9e
files src/config/config-filter.c
diffstat 1 files changed, 6 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/config/config-filter.c	Mon Feb 26 12:53:19 2018 +0200
+++ b/src/config/config-filter.c	Tue Mar 06 10:31:51 2018 +0200
@@ -37,13 +37,14 @@
 {
 	/* 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,