]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Keep "selected" state TRUE only while mailbox is successfully SELECTed
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 25 Dec 2017 17:33:33 +0000 (19:33 +0200)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Thu, 18 Jan 2018 10:07:06 +0000 (12:07 +0200)
src/lib-storage/index/imapc/imapc-storage.c

index 387bf7977931ea468be2c11902b1fc66ad319736..ed94d37e323eb3290f3d967acfba01acab8b801c 100644 (file)
@@ -577,8 +577,10 @@ imapc_mailbox_reopen_callback(const struct imapc_command_reply *reply,
        mbox->selecting = FALSE;
        if (reply->state != IMAPC_COMMAND_STATE_OK)
                errmsg = reply->text_full;
-       else if (imapc_mailbox_verify_select(mbox, &errmsg))
+       else if (imapc_mailbox_verify_select(mbox, &errmsg)) {
                errmsg = NULL;
+               mbox->selected = TRUE;
+       }
 
        if (errmsg != NULL) {
                imapc_client_mailbox_reconnect(mbox->client_box,
@@ -609,6 +611,7 @@ static void imapc_mailbox_reopen(void *context)
 
        mbox->initial_sync_done = FALSE;
        mbox->selecting = TRUE;
+       mbox->selected = FALSE;
        mbox->exists_received = FALSE;
 
        cmd = imapc_client_mailbox_cmd(mbox->client_box,
@@ -635,7 +638,6 @@ imapc_mailbox_open_callback(const struct imapc_command_reply *reply,
        const char *error;
 
        ctx->mbox->selecting = FALSE;
-       ctx->mbox->selected = TRUE;
        if (reply->state == IMAPC_COMMAND_STATE_OK) {
                if (!imapc_mailbox_verify_select(ctx->mbox, &error)) {
                        mail_storage_set_critical(ctx->mbox->box.storage,
@@ -643,6 +645,7 @@ imapc_mailbox_open_callback(const struct imapc_command_reply *reply,
                                ctx->mbox->box.name, error);
                        ctx->ret = -1;
                } else {
+                       ctx->mbox->selected = TRUE;
                        ctx->ret = 0;
                }
        } else if (reply->state == IMAPC_COMMAND_STATE_NO) {