changeset 14164:71201cce97b5

lib-storage: Added namespace { ignore_on_failure } setting. If the namespace can't be created for any reason, it's simply silently skipped.
author Timo Sirainen <tss@iki.fi>
date Mon, 13 Feb 2012 14:34:31 +0200
parents 9574963a16f7
children 9c4cac11da15
files src/lib-storage/mail-namespace.c src/lib-storage/mail-storage-settings.c src/lib-storage/mail-storage-settings.h
diffstat 3 files changed, 13 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/mail-namespace.c	Sun Feb 12 23:04:13 2012 +0200
+++ b/src/lib-storage/mail-namespace.c	Mon Feb 13 14:34:31 2012 +0200
@@ -280,9 +280,16 @@
 	}
 	for (i = 0; i < count; i++) {
 		if (namespace_add(user, ns_set[i], unexpanded_ns_set[i],
-				  mail_set, ns_p, error_r) < 0)
-			return -1;
-		ns_p = &(*ns_p)->next;
+				  mail_set, ns_p, error_r) < 0) {
+			if (!ns_set[i]->ignore_on_failure)
+				return -1;
+			if (mail_set->mail_debug) {
+				i_debug("Skipping namespace %s: %s",
+					ns_set[i]->prefix, *error_r);
+			}
+		} else {
+			ns_p = &(*ns_p)->next;
+		}
 	}
 
 	if (namespaces != NULL) {
--- a/src/lib-storage/mail-storage-settings.c	Sun Feb 12 23:04:13 2012 +0200
+++ b/src/lib-storage/mail-storage-settings.c	Mon Feb 13 14:34:31 2012 +0200
@@ -149,6 +149,7 @@
 	DEF(SET_BOOL, hidden),
 	DEF(SET_ENUM, list),
 	DEF(SET_BOOL, subscriptions),
+	DEF(SET_BOOL, ignore_on_failure),
 
 	DEFLIST_UNIQUE(mailboxes, "mailbox", &mailbox_setting_parser_info),
 
@@ -167,6 +168,7 @@
 	.hidden = FALSE,
 	.list = "yes:no:children",
 	.subscriptions = TRUE,
+	.ignore_on_failure = FALSE,
 
 	.mailboxes = ARRAY_INIT
 };
--- a/src/lib-storage/mail-storage-settings.h	Sun Feb 12 23:04:13 2012 +0200
+++ b/src/lib-storage/mail-storage-settings.h	Mon Feb 13 14:34:31 2012 +0200
@@ -51,6 +51,7 @@
 	bool hidden;
 	const char *list;
 	bool subscriptions;
+	bool ignore_on_failure;
 
 	ARRAY_DEFINE(mailboxes, struct mailbox_settings *);
 	struct mail_user_settings *user_set;