]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
plugins: Use mail_namespace_storage_added hook instead of mailbox_list_created.
authorTimo Sirainen <tss@iki.fi>
Mon, 14 Dec 2009 19:32:01 +0000 (14:32 -0500)
committerTimo Sirainen <tss@iki.fi>
Mon, 14 Dec 2009 19:32:01 +0000 (14:32 -0500)
In mailbox_list_created the storage hasn't yet overridden the list functions.

--HG--
branch : HEAD

src/plugins/acl/acl-mailbox-list.c
src/plugins/acl/acl-plugin.c
src/plugins/acl/acl-plugin.h
src/plugins/lazy-expunge/lazy-expunge-plugin.c
src/plugins/listescape/listescape-plugin.c
src/plugins/notify/notify-storage.c
src/plugins/quota/quota-plugin.c
src/plugins/quota/quota-plugin.h
src/plugins/quota/quota-storage.c

index 75397770236c36b60a71014d3388ccb5d6a03fb1..930e3525790fafacf6acaa92a14d44928f78a361 100644 (file)
@@ -607,17 +607,17 @@ static void acl_mailbox_list_init_default(struct mailbox_list *list)
        MODULE_CONTEXT_SET(list, acl_mailbox_list_module, alist);
 }
 
-void acl_mailbox_list_created(struct mailbox_list *list)
+void acl_mail_namespace_storage_added(struct mail_namespace *ns)
 {
-       struct acl_user *auser = ACL_USER_CONTEXT(list->ns->user);
+       struct acl_user *auser = ACL_USER_CONTEXT(ns->user);
 
        if (auser == NULL) {
                /* ACLs disabled for this user */
-       } else if ((list->ns->flags & NAMESPACE_FLAG_NOACL) != 0) {
+       } else if ((ns->flags & NAMESPACE_FLAG_NOACL) != 0) {
                /* no ACL checks for internal namespaces (lda, shared) */
-               if (list->ns->type == NAMESPACE_SHARED)
-                       acl_mailbox_list_init_shared(list);
+               if (ns->type == NAMESPACE_SHARED)
+                       acl_mailbox_list_init_shared(ns->list);
        } else {
-               acl_mailbox_list_init_default(list);
+               acl_mailbox_list_init_default(ns->list);
        }
 }
index 9ac8645ea7f48c1e9d8f4cc55281b8122d3d7f55..8b8687512aa4d404a022292314b877a7d69f55d1 100644 (file)
@@ -12,7 +12,7 @@ const char *acl_plugin_version = PACKAGE_VERSION;
 static struct mail_storage_hooks acl_mail_storage_hooks = {
        .mail_user_created = acl_mail_user_created,
        .mail_storage_created = acl_mail_storage_created,
-       .mailbox_list_created = acl_mailbox_list_created
+       .mail_namespace_storage_added = acl_mail_namespace_storage_added
 };
 
 void acl_plugin_init(struct module *module)
index 221bd68bbf85622bbf085e6c0a25eb7bbd4e7062..5a35037d440a9b9883b04f030d967fa68a2d0fbd 100644 (file)
@@ -40,7 +40,7 @@ extern MODULE_CONTEXT_DEFINE(acl_mailbox_list_module,
                             &mailbox_list_module_register);
 
 void acl_mail_storage_created(struct mail_storage *storage);
-void acl_mailbox_list_created(struct mailbox_list *list);
+void acl_mail_namespace_storage_added(struct mail_namespace *ns);
 void acl_mail_user_created(struct mail_user *list);
 
 struct mailbox *
index d56a953c1b41e3f12e1d757c812aca8e3be81733..40058f1200fe20510a8ad21c2042e5423b0640d0 100644 (file)
@@ -341,10 +341,11 @@ lazy_expunge_mailbox_list_delete(struct mailbox_list *list, const char *name)
        return 0;
 }
 
-static void lazy_expunge_mailbox_list_created(struct mailbox_list *list)
+static void lazy_expunge_mail_namespace_storage_added(struct mail_namespace *ns)
 {
+       struct mailbox_list *list = ns->list;
        struct lazy_expunge_mail_user *luser =
-               LAZY_EXPUNGE_USER_CONTEXT(list->ns->user);
+               LAZY_EXPUNGE_USER_CONTEXT(ns->user);
        struct lazy_expunge_mailbox_list *llist;
        const char *const *p;
        unsigned int i;
@@ -353,13 +354,13 @@ static void lazy_expunge_mailbox_list_created(struct mailbox_list *list)
           quota plugin sees it */
        p = t_strsplit_spaces(luser->env, " ");
        for (i = 0; i < LAZY_NAMESPACE_COUNT; i++, p++) {
-               if (strcmp(list->ns->prefix, *p) == 0) {
-                       list->ns->flags |= NAMESPACE_FLAG_NOQUOTA;
+               if (strcmp(ns->prefix, *p) == 0) {
+                       ns->flags |= NAMESPACE_FLAG_NOQUOTA;
                        break;
                }
        }
 
-       if (luser != NULL && list->ns->type == NAMESPACE_PRIVATE) {
+       if (luser != NULL && ns->type == NAMESPACE_PRIVATE) {
                llist = p_new(list->pool, struct lazy_expunge_mailbox_list, 1);
                llist->module_ctx.super = list->v;
                list->v.delete_mailbox = lazy_expunge_mailbox_list_delete;
@@ -421,7 +422,7 @@ static void lazy_expunge_mail_user_created(struct mail_user *user)
 static struct mail_storage_hooks lazy_expunge_mail_storage_hooks = {
        .mail_user_created = lazy_expunge_mail_user_created,
        .mail_namespaces_created = lazy_expunge_mail_namespaces_created,
-       .mailbox_list_created = lazy_expunge_mailbox_list_created,
+       .mail_namespace_storage_added = lazy_expunge_mail_namespace_storage_added,
        .mailbox_allocated = lazy_expunge_mailbox_allocated
 };
 
index 8cf3a00a9a1ad05825d3f1cb93b0a648e56b40d4..da140937f0ee78967c780e5c50f93775d8378783 100644 (file)
@@ -301,15 +301,16 @@ static void listescape_mail_storage_created(struct mail_storage *storage)
        MODULE_CONTEXT_SET(storage, listescape_storage_module, mstorage);
 }
 
-static void listescape_mailbox_list_created(struct mailbox_list *list)
+static void listescape_mail_namespace_storage_added(struct mail_namespace *ns)
 {
+       struct mailbox_list *list = ns->list;
        struct listescape_mailbox_list *mlist;
        const char *env;
 
-       if (list->hierarchy_sep == list->ns->sep)
+       if (list->hierarchy_sep == ns->sep)
                return;
 
-       list->ns->real_sep = list->ns->sep;
+       ns->real_sep = ns->sep;
 
        mlist = p_new(list->pool, struct listescape_mailbox_list, 1);
        mlist->module_ctx.super = list->v;
@@ -333,7 +334,7 @@ static void listescape_mailbox_list_created(struct mailbox_list *list)
 
 static struct mail_storage_hooks listescape_mail_storage_hooks = {
        .mail_storage_created = listescape_mail_storage_created,
-       .mailbox_list_created = listescape_mailbox_list_created
+       .mail_namespace_storage_added = listescape_mail_namespace_storage_added
 };
 
 void listescape_plugin_init(struct module *module)
index c24d8c2a8fb06d034f315266099be5f999adbc9d..97faf848d5fe7d0932ed733d413f8d54e3967de9 100644 (file)
@@ -266,8 +266,9 @@ static void notify_mail_storage_created(struct mail_storage *storage)
        MODULE_CONTEXT_SET_SELF(storage, notify_storage_module, lstorage);
 }
 
-static void notify_mailbox_list_created(struct mailbox_list *list)
+static void notify_mail_namespace_storage_added(struct mail_namespace *ns)
 {
+       struct mailbox_list *list = ns->list;
        union mailbox_list_module_context *llist;
 
        llist = p_new(list->pool, union mailbox_list_module_context, 1);
@@ -280,7 +281,7 @@ static void notify_mailbox_list_created(struct mailbox_list *list)
 
 static struct mail_storage_hooks notify_mail_storage_hooks = {
        .mail_storage_created = notify_mail_storage_created,
-       .mailbox_list_created = notify_mailbox_list_created
+       .mail_namespace_storage_added = notify_mail_namespace_storage_added
 };
 
 void notify_plugin_init_storage(struct module *module)
index 89dec660c49c1c42b52c3cc7f8c953c58981dc6d..184089b3da7bf16a454f6ced4845b257ac2f6197 100644 (file)
@@ -13,7 +13,7 @@ static struct mail_storage_hooks quota_mail_storage_hooks = {
        .mail_user_created = quota_mail_user_created,
        .mail_namespaces_created = quota_mail_namespaces_created,
        .mail_storage_created = quota_mail_storage_created,
-       .mailbox_list_created = quota_mailbox_list_created
+       .mail_namespace_storage_added = quota_mail_namespace_storage_added
 };
 
 void quota_plugin_init(struct module *module)
index 2b0268ecdd9e94aaab15bfea7c8ad73c51b98c18..3686d12783096c64197435fb3ebdbe46b9456c1c 100644 (file)
@@ -20,7 +20,7 @@ extern MODULE_CONTEXT_DEFINE(quota_user_module, &mail_user_module_register);
 
 void quota_mail_user_created(struct mail_user *user);
 void quota_mail_storage_created(struct mail_storage *storage);
-void quota_mailbox_list_created(struct mailbox_list *list);
+void quota_mail_namespace_storage_added(struct mail_namespace *ns);
 void quota_mail_namespaces_created(struct mail_namespace *namespaces);
 
 void quota_plugin_init(struct module *module);
index 4b9db099995f644be94a2ff9009e7d25809e21d3..d1b1932d5718fecf7c8c81f7ce6b92024065966c 100644 (file)
@@ -528,23 +528,24 @@ quota_find_root_for_ns(struct quota *quota, struct mail_namespace *ns)
        return NULL;
 }
 
-void quota_mailbox_list_created(struct mailbox_list *list)
+void quota_mail_namespace_storage_added(struct mail_namespace *ns)
 {
+       struct mailbox_list *list = ns->list;
        struct quota_mailbox_list *qlist;
        struct quota *quota = NULL;
        struct quota_root *root;
        bool add;
 
-       if ((list->ns->flags & NAMESPACE_FLAG_NOQUOTA) != 0)
+       if ((ns->flags & NAMESPACE_FLAG_NOQUOTA) != 0)
                add = FALSE;
-       else if (list->ns->owner == NULL) {
+       else if (ns->owner == NULL) {
                /* see if we have a quota explicitly defined for
                   this namespace */
-               quota = quota_get_mail_user_quota(list->ns->user);
-               root = quota_find_root_for_ns(quota, list->ns);
+               quota = quota_get_mail_user_quota(ns->user);
+               root = quota_find_root_for_ns(quota, ns);
                add = root != NULL;
                if (root != NULL)
-                       root->ns = list->ns;
+                       root->ns = ns;
        } else {
                add = TRUE;
        }
@@ -557,10 +558,10 @@ void quota_mailbox_list_created(struct mailbox_list *list)
                MODULE_CONTEXT_SET(list, quota_mailbox_list_module, qlist);
 
                /* register to owner's quota roots */
-               quota = list->ns->owner != NULL ?
-                       quota_get_mail_user_quota(list->ns->owner) :
-                       quota_get_mail_user_quota(list->ns->user);
-               quota_add_user_namespace(quota, list->ns);
+               quota = ns->owner != NULL ?
+                       quota_get_mail_user_quota(ns->owner) :
+                       quota_get_mail_user_quota(ns->user);
+               quota_add_user_namespace(quota, ns);
        }
 }