]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
quota: Use mailbox_list_created hook to override list methods.
authorTimo Sirainen <tss@iki.fi>
Thu, 5 Aug 2010 16:07:35 +0000 (17:07 +0100)
committerTimo Sirainen <tss@iki.fi>
Thu, 5 Aug 2010 16:07:35 +0000 (17:07 +0100)
src/plugins/quota/quota-plugin.c
src/plugins/quota/quota-plugin.h
src/plugins/quota/quota-storage.c

index 43da3a9a3255c5e231886c5f751e64f84a0fec18..867f6526e4174c15371cb68c51355d2f6fed8649 100644 (file)
@@ -12,7 +12,7 @@ const char *quota_plugin_version = DOVECOT_VERSION;
 static struct mail_storage_hooks quota_mail_storage_hooks = {
        .mail_user_created = quota_mail_user_created,
        .mail_namespaces_created = quota_mail_namespaces_created,
-       .mail_namespace_storage_added = quota_mail_namespace_storage_added,
+       .mailbox_list_created = quota_mailbox_list_created,
        .mailbox_allocated = quota_mailbox_allocated,
        .mail_allocated = quota_mail_allocated
 };
index 22ed6ef3fb4d1e1e67da9fb5c5d4ac8da7c2cc0d..8c85329fcc8a340aa6438ee93dafca06cd74c3c4 100644 (file)
@@ -6,6 +6,7 @@
 
 struct module;
 struct mailbox;
+struct mailbox_list;
 struct mail;
 
 #define QUOTA_USER_CONTEXT(obj) \
@@ -22,7 +23,7 @@ struct mail_storage;
 extern MODULE_CONTEXT_DEFINE(quota_user_module, &mail_user_module_register);
 
 void quota_mail_user_created(struct mail_user *user);
-void quota_mail_namespace_storage_added(struct mail_namespace *ns);
+void quota_mailbox_list_created(struct mailbox_list *list);
 void quota_mail_namespaces_created(struct mail_namespace *namespaces);
 void quota_mailbox_allocated(struct mailbox *box);
 void quota_mail_allocated(struct mail *mail);
index 4f3cc7b40d952d4a97a010ce0e819e3fa2b1447a..3885f8f8bb9891fc766e5a8dd9fe317e023a40db 100644 (file)
@@ -469,23 +469,22 @@ quota_find_root_for_ns(struct quota *quota, struct mail_namespace *ns)
        return NULL;
 }
 
-void quota_mail_namespace_storage_added(struct mail_namespace *ns)
+void quota_mailbox_list_created(struct mailbox_list *list)
 {
-       struct mailbox_list *list = ns->list;
        struct quota_mailbox_list *qlist;
        struct quota *quota = NULL;
        struct quota_root *root;
        bool add;
 
        /* see if we have a quota explicitly defined for this namespace */
-       quota = quota_get_mail_user_quota(ns->user);
-       root = quota_find_root_for_ns(quota, ns);
+       quota = quota_get_mail_user_quota(list->ns->user);
+       root = quota_find_root_for_ns(quota, list->ns);
        if (root != NULL)
-               root->ns = ns;
+               root->ns = list->ns;
 
-       if ((ns->flags & NAMESPACE_FLAG_NOQUOTA) != 0)
+       if ((list->ns->flags & NAMESPACE_FLAG_NOQUOTA) != 0)
                add = FALSE;
-       else if (ns->owner == NULL) {
+       else if (list->ns->owner == NULL) {
                /* public namespace - add quota only if namespace is
                   explicitly defined for it */
                add = root != NULL;
@@ -503,10 +502,10 @@ void quota_mail_namespace_storage_added(struct mail_namespace *ns)
                MODULE_CONTEXT_SET(list, quota_mailbox_list_module, qlist);
 
                /* register to owner's quota roots */
-               quota = ns->owner != NULL ?
-                       quota_get_mail_user_quota(ns->owner) :
-                       quota_get_mail_user_quota(ns->user);
-               quota_add_user_namespace(quota, ns);
+               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);
        }
 }