# HG changeset patch # User Timo Sirainen # Date 1452010646 18000 # Node ID af2ddcf54f9238b04f61ba55a6f7bb6f50a5bc8e # Parent f8d2dded6aa02e52bf81294e32c2a923988d9589 pop3: Make sure pop3_lock_session=yes creates the lock's directory if it's missing. This happened at least with mbox if the root .imap/ didn't exist yet. diff -r f8d2dded6aa0 -r af2ddcf54f92 src/pop3/pop3-client.c --- a/src/pop3/pop3-client.c Tue Jan 05 11:08:01 2016 -0500 +++ b/src/pop3/pop3-client.c Tue Jan 05 11:17:26 2016 -0500 @@ -335,17 +335,26 @@ const struct mail_storage_settings *mail_set = mail_storage_service_user_get_mail_set(client->service_user); struct dotlock_settings dotlock_set; + enum mailbox_list_path_type type; const char *dir, *path; int ret; - if (!mailbox_list_get_root_path(client->inbox_ns->list, - MAILBOX_LIST_PATH_TYPE_INDEX, &dir) && - !mailbox_list_get_root_path(client->inbox_ns->list, - MAILBOX_LIST_PATH_TYPE_DIR, &dir)) { + if (mailbox_list_get_root_path(client->inbox_ns->list, + MAILBOX_LIST_PATH_TYPE_INDEX, &dir)) { + type = MAILBOX_LIST_PATH_TYPE_INDEX; + } else if (mailbox_list_get_root_path(client->inbox_ns->list, + MAILBOX_LIST_PATH_TYPE_DIR, &dir)) { + type = MAILBOX_LIST_PATH_TYPE_DIR; + } else { i_error("pop3_lock_session: Storage has no root/index directory, " "can't create a POP3 session lock file"); return -1; } + if (mailbox_list_mkdir_root(client->inbox_ns->list, dir, type) < 0) { + i_error("pop3_lock_session: Couldn't create root directory %s: %s", + dir, mailbox_list_get_last_error(client->inbox_ns->list, NULL)); + return -1; + } path = t_strdup_printf("%s/"POP3_LOCK_FNAME, dir); dotlock_set = session_dotlock_set;