changeset 22947:d5b44ec763b0

lib-storage: Make sure index root is created when it's the same as root directory Fixes errors about failing to create mailboxes.lock when the index root directory doesn't exist yet.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Tue, 12 Dec 2017 21:36:07 +0200
parents 12c7ddbeae92
children e48f732f0f39
files src/lib-storage/mailbox-list.c
diffstat 1 files changed, 7 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/mailbox-list.c	Thu Apr 26 09:48:39 2018 +0300
+++ b/src/lib-storage/mailbox-list.c	Tue Dec 12 21:36:07 2017 +0200
@@ -1653,27 +1653,23 @@
 
 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;
 }