# HG changeset patch # User J. Nick Koston # Date 1480577882 21600 # Node ID 2bb6952b3a97a09660018a8c4516831267eb4193 # Parent a29415ef148def78bf9bd94cbd3e091431cad37a config: Match multiple names in local_name This can significantly reduce memory usage when using a UCC certificate with multiple names by only loading the certificate and key once. diff -r a29415ef148d -r 2bb6952b3a97 src/config/config-filter.c --- a/src/config/config-filter.c Thu Nov 24 04:06:22 2016 +0200 +++ b/src/config/config-filter.c Thu Dec 01 01:38:02 2016 -0600 @@ -37,7 +37,17 @@ if (mask->local_name != NULL) { if (filter->local_name == NULL) return FALSE; - if (dns_match_wildcard(filter->local_name, mask->local_name) != 0) + /* 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, " "); + bool matched = FALSE; + for (; *local_name != NULL; local_name++) { + if (dns_match_wildcard(filter->local_name, *local_name) == 0) { + matched = TRUE; + break; + } + } + if (!matched) return FALSE; } /* FIXME: it's not comparing full masks */