]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
quota: Log a warning if Maildir++ quota is enabled for non-Maildir storage.
authorTimo Sirainen <tss@iki.fi>
Wed, 6 Oct 2010 18:49:31 +0000 (19:49 +0100)
committerTimo Sirainen <tss@iki.fi>
Wed, 6 Oct 2010 18:49:31 +0000 (19:49 +0100)
src/plugins/quota/quota-maildir.c

index 41693a0d685806fbbdd96d9ef7ba77e7b1ad6959..51f3f6eb77d110dd50a438835ba5dfcc0cf6f195 100644 (file)
@@ -618,16 +618,31 @@ static int maildirsize_read(struct maildir_quota_root *root)
 
 static bool maildirquota_limits_init(struct maildir_quota_root *root)
 {
-       if (!root->limits_initialized) {
-               root->limits_initialized = TRUE;
+       struct mailbox_list *list;
+       struct mail_storage *storage;
+       const char *name = "";
 
-               if (root->maildirsize_path == NULL) {
-                       i_warning("quota maildir: No maildir namespaces, "
-                                 "ignoring quota.");
-               }
+       if (root->limits_initialized)
+               return root->maildirsize_path != NULL;
+       root->limits_initialized = TRUE;
+
+       if (root->maildirsize_ns == NULL) {
+               i_assert(root->maildirsize_path == NULL);
+               return FALSE;
        }
+       i_assert(root->maildirsize_path != NULL);
 
-       return root->maildirsize_path != NULL;
+       list = root->maildirsize_ns->list;
+       if (mailbox_list_get_storage(&list, &name, &storage) == 0 &&
+           strcmp(storage->name, MAILDIR_STORAGE_NAME) != 0) {
+               /* non-maildir namespace, skip */
+               i_warning("quota: Namespace '%s' is not Maildir, "
+                         "skipping for Maildir++ quota",
+                         root->maildirsize_ns->prefix);
+               root->maildirsize_path = NULL;
+               return FALSE;
+       }
+       return TRUE;
 }
 
 static int maildirquota_read_limits(struct maildir_quota_root *root)