From: Aki Tuomi Date: Thu, 18 May 2017 11:59:51 +0000 (+0300) Subject: virtual: Match any metadata condition X-Git-Tag: 2.2.32.rc1~94 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a2b679e4f30729ed599e984f94edbc2e28597d0b;p=thirdparty%2Fdovecot%2Fcore.git virtual: Match any metadata condition The old code ignored succesful earlier matches for patterns, and stopped looking on first non-matching metadata pattern. Now it breaks on error or on first matching pattern. --- diff --git a/src/plugins/virtual/virtual-config.c b/src/plugins/virtual/virtual-config.c index ed431cef91..4ca45baf05 100644 --- a/src/plugins/virtual/virtual-config.c +++ b/src/plugins/virtual/virtual-config.c @@ -375,7 +375,8 @@ virtual_config_metadata_match(const struct mailbox_info *info, box = mailbox_alloc(info->ns->list, info->vname, MAILBOX_FLAG_READONLY); mailbox_set_reason(box, "virtual mailbox metadata match"); for (i = 0; i < count; i++) { - if ((ret = virtual_config_box_metadata_match(box, boxes[i], error_r)) <= 0) + /* break on error or match */ + if ((ret = virtual_config_box_metadata_match(box, boxes[i], error_r)) < 0 || ret > 0) break; } mailbox_free(&box);