dovecot-2.2: virtual plugin: If mailbox list iteration fails, lo...

dovecot at dovecot.org dovecot at dovecot.org
Mon Jan 19 20:26:14 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/d4e9c940fb7f
changeset: 18171:d4e9c940fb7f
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Jan 19 22:09:14 2015 +0200
description:
virtual plugin: If mailbox list iteration fails, log the error.

diffstat:

 src/plugins/virtual/virtual-config.c |  16 ++++++++++++----
 1 files changed, 12 insertions(+), 4 deletions(-)

diffs (40 lines):

diff -r 861c9985e7c2 -r d4e9c940fb7f src/plugins/virtual/virtual-config.c
--- a/src/plugins/virtual/virtual-config.c	Mon Jan 19 21:58:19 2015 +0200
+++ b/src/plugins/virtual/virtual-config.c	Mon Jan 19 22:09:14 2015 +0200
@@ -304,7 +304,8 @@
 	return FALSE;
 }
 
-static int virtual_config_expand_wildcards(struct virtual_parse_context *ctx)
+static int virtual_config_expand_wildcards(struct virtual_parse_context *ctx,
+					   const char **error_r)
 {
 	const enum mail_namespace_type iter_ns_types =
 		MAIL_NAMESPACE_TYPE_MASK_ALL;
@@ -354,7 +355,11 @@
 	}
 	for (i = 0; i < count; i++)
 		mail_search_args_unref(&wboxes[i]->search_args);
-	return mailbox_list_iter_deinit(&iter);
+	if (mailbox_list_iter_deinit(&iter) < 0) {
+		*error_r = mailbox_list_get_last_error(user->namespaces->list, NULL);
+		return -1;
+	}
+	return 0;
 }
 
 static void virtual_config_search_args_dup(struct virtual_mailbox *mbox)
@@ -434,8 +439,11 @@
 	}
 
 	virtual_mailbox_get_list_patterns(&ctx);
-	if (ret == 0 && ctx.have_wildcards)
-		ret = virtual_config_expand_wildcards(&ctx);
+	if (ret == 0 && ctx.have_wildcards) {
+		ret = virtual_config_expand_wildcards(&ctx, &error);
+		if (ret < 0)
+			mail_storage_set_critical(storage, "%s: %s", path, error);
+	}
 
 	if (ret == 0 && !ctx.have_mailbox_defines) {
 		mail_storage_set_critical(storage,


More information about the dovecot-cvs mailing list