changeset 8652:8b3af54b4dc3 HEAD

hook_mail_namespaces_created() wasn't always called with all namespaces as parameter.
author Timo Sirainen <tss@iki.fi>
date Sun, 18 Jan 2009 20:15:26 -0500
parents a498c440eef2
children 4dadcc2f6be2
files src/lib-storage/index/shared/shared-storage.c src/lib-storage/mail-namespace.c src/lib-storage/mail-user.c src/lib-storage/mail-user.h
diffstat 4 files changed, 11 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/shared/shared-storage.c	Sun Jan 18 20:14:31 2009 -0500
+++ b/src/lib-storage/index/shared/shared-storage.c	Sun Jan 18 20:15:26 2009 -0500
@@ -243,11 +243,11 @@
 		mail_namespace_destroy(ns);
 		return -1;
 	}
-	mail_user_add_namespace(user, ns);
 	_storage->ns->flags |= NAMESPACE_FLAG_USABLE;
-
 	*_name = mail_namespace_fix_sep(ns, name);
 	*ns_r = ns;
+
+	mail_user_add_namespace(user, &ns);
 	return 0;
 }
 
--- a/src/lib-storage/mail-namespace.c	Sun Jan 18 20:14:31 2009 -0500
+++ b/src/lib-storage/mail-namespace.c	Sun Jan 18 20:15:26 2009 -0500
@@ -244,7 +244,7 @@
 			}
 			return -1;
 		}
-		mail_user_add_namespace(user, namespaces);
+		mail_user_add_namespace(user, &namespaces);
 
 		if (hook_mail_namespaces_created != NULL) {
 			T_BEGIN {
--- a/src/lib-storage/mail-user.c	Sun Jan 18 20:14:31 2009 -0500
+++ b/src/lib-storage/mail-user.c	Sun Jan 18 20:15:26 2009 -0500
@@ -75,9 +75,10 @@
 	user->home_looked_up = TRUE;
 }
 
-void mail_user_add_namespace(struct mail_user *user, struct mail_namespace *ns)
+void mail_user_add_namespace(struct mail_user *user,
+			     struct mail_namespace **namespaces)
 {
-	struct mail_namespace **tmp, *next;
+	struct mail_namespace **tmp, *next, *ns = *namespaces;
 
 	for (; ns != NULL; ns = next) {
 		next = ns->next;
@@ -90,6 +91,7 @@
 		ns->next = *tmp;
 		*tmp = ns;
 	}
+	*namespaces = user->namespaces;
 }
 
 void mail_user_drop_useless_namespaces(struct mail_user *user)
--- a/src/lib-storage/mail-user.h	Sun Jan 18 20:14:31 2009 -0500
+++ b/src/lib-storage/mail-user.h	Sun Jan 18 20:15:26 2009 -0500
@@ -60,8 +60,10 @@
    has no home directory) or -1 if lookup failed. */
 int mail_user_get_home(struct mail_user *user, const char **home_r);
 
-/* Add a new namespace to user's namespaces. */
-void mail_user_add_namespace(struct mail_user *user, struct mail_namespace *ns);
+/* Add more namespaces to user's namespaces. The ->next pointers may be
+   changed, so the namespaces pointer will be updated to user->namespaces. */
+void mail_user_add_namespace(struct mail_user *user,
+			     struct mail_namespace **namespaces);
 /* Drop autocreated shared namespaces that don't have any "usable" mailboxes. */
 void mail_user_drop_useless_namespaces(struct mail_user *user);