From: Timo Sirainen Date: Thu, 5 Aug 2010 16:07:35 +0000 (+0100) Subject: quota: Use mailbox_list_created hook to override list methods. X-Git-Tag: 2.0.rc5~29 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d7c2ae49f036ef256f63bd2d437c53da122c665e;p=thirdparty%2Fdovecot%2Fcore.git quota: Use mailbox_list_created hook to override list methods. --- diff --git a/src/plugins/quota/quota-plugin.c b/src/plugins/quota/quota-plugin.c index 43da3a9a32..867f6526e4 100644 --- a/src/plugins/quota/quota-plugin.c +++ b/src/plugins/quota/quota-plugin.c @@ -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 }; diff --git a/src/plugins/quota/quota-plugin.h b/src/plugins/quota/quota-plugin.h index 22ed6ef3fb..8c85329fcc 100644 --- a/src/plugins/quota/quota-plugin.h +++ b/src/plugins/quota/quota-plugin.h @@ -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); diff --git a/src/plugins/quota/quota-storage.c b/src/plugins/quota/quota-storage.c index 4f3cc7b40d..3885f8f8bb 100644 --- a/src/plugins/quota/quota-storage.c +++ b/src/plugins/quota/quota-storage.c @@ -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); } }