]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Make sure index root is created when it's the same as root directory
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Tue, 12 Dec 2017 19:36:07 +0000 (21:36 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Thu, 3 May 2018 11:47:35 +0000 (14:47 +0300)
Fixes errors about failing to create mailboxes.lock when the index root
directory doesn't exist yet.

src/lib-storage/mailbox-list.c

index 0bf8f8438cdbbf4280000c26584d71361534c43c..1da62414437d3afb26dafb829a2844d4f26b5028 100644 (file)
@@ -1653,27 +1653,23 @@ static bool mailbox_list_init_changelog(struct mailbox_list *list)
 
 int mailbox_list_mkdir_missing_index_root(struct mailbox_list *list)
 {
-       const char *root_dir, *index_dir;
+       const char *index_dir;
        int ret;
 
        if (list->index_root_dir_created)
                return 1;
 
-       /* if index root dir hasn't been created yet, do it now */
+       /* If index root dir hasn't been created yet, do it now.
+          Do this here even if the index directory is the same as mail root
+          directory, because it may not have been created elsewhere either. */
        ret = mailbox_list_get_root_path(list, MAILBOX_LIST_PATH_TYPE_INDEX,
                                         &index_dir);
        if (ret <= 0)
                return ret;
-       ret = mailbox_list_get_root_path(list, MAILBOX_LIST_PATH_TYPE_MAILBOX,
-                                        &root_dir);
-       if (ret <= 0)
-               return ret;
 
-       if (strcmp(root_dir, index_dir) != 0) {
-               if (mailbox_list_mkdir_root(list, index_dir,
-                                           MAILBOX_LIST_PATH_TYPE_INDEX) < 0)
-                       return -1;
-       }
+       if (mailbox_list_mkdir_root(list, index_dir,
+                                   MAILBOX_LIST_PATH_TYPE_INDEX) < 0)
+               return -1;
        list->index_root_dir_created = TRUE;
        return 1;
 }