changeset 12210:32f68d621f1d

virtual: Allow opening virtual mailboxes that refer to non-existing mailboxes. It could be intentional that not everyone has the same set of mailboxes always.
author Timo Sirainen <tss@iki.fi>
date Thu, 30 Sep 2010 16:49:16 +0100
parents a7a953486a0b
children dfa2b49d8298
files src/plugins/virtual/virtual-storage.c
diffstat 1 files changed, 10 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/virtual/virtual-storage.c	Thu Sep 30 16:05:57 2010 +0100
+++ b/src/plugins/virtual/virtual-storage.c	Thu Sep 30 16:49:16 2010 +0100
@@ -142,16 +142,19 @@
 					  &error);
 	name = t_strdup(get_user_visible_mailbox_name(bbox->box));
 	mailbox_free(&bbox->box);
-	if (bbox->wildcard &&
-	    (error == MAIL_ERROR_PERM || error == MAIL_ERROR_NOTFOUND)) {
-		/* this mailbox wasn't explicitly specified. just skip it. */
+	if (error == MAIL_ERROR_NOTFOUND) {
+		/* ignore this. it could be intentional. */
+		if (mbox->storage->storage.user->mail_debug) {
+			i_debug("virtual mailbox %s: "
+				"Skipping non-existing mailbox %s",
+				mbox->box.vname, name);
+		}
 		return 0;
 	}
 
-	if (error == MAIL_ERROR_NOTFOUND) {
-		/* the virtual mailbox exists, we just can't open it.
-		   change the error type. */
-		error = MAIL_ERROR_NOTPOSSIBLE;
+	if (error == MAIL_ERROR_PERM && bbox->wildcard) {
+		/* this mailbox wasn't explicitly specified. just skip it. */
+		return 0;
 	}
 	str = t_strdup_printf(
 		"Virtual mailbox open failed because of mailbox %s: %s",