]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: Fixed error handling while opening mailbox.
authorTimo Sirainen <tss@iki.fi>
Sun, 4 Sep 2011 09:03:12 +0000 (12:03 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 4 Sep 2011 09:03:12 +0000 (12:03 +0300)
src/lib-storage/index/imapc/imapc-mailbox.c
src/lib-storage/index/imapc/imapc-storage.c
src/lib-storage/index/imapc/imapc-storage.h

index 2a6f6c49309b64879942b3387fd3d56e1c4dd1f2..6eec33e61243ed3f4b287d9bc940f43a71685884 100644 (file)
@@ -90,16 +90,19 @@ imapc_newmsgs_callback(const struct imapc_command_reply *reply,
        struct imapc_mailbox *mbox = context;
 
        if (reply->state == IMAPC_COMMAND_STATE_OK)
-               ;
+               mbox->open_success = TRUE;
        else if (reply->state == IMAPC_COMMAND_STATE_NO) {
                imapc_copy_error_from_reply(mbox->storage, MAIL_ERROR_PARAMS,
                                            reply);
-       } else {
+       } else if (mbox->opening ||
+                  reply->state != IMAPC_COMMAND_STATE_DISCONNECTED) {
                mail_storage_set_critical(&mbox->storage->storage,
-                       "imapc: Command failed: %s", reply->text_full);
+                       "imapc: Mailbox newmsgs fetch failed: %s",
+                       reply->text_full);
        }
        if (mbox->opening) {
-               imapc_mailbox_open_finish(mbox);
+               if (reply->state == IMAPC_COMMAND_STATE_OK)
+                       imapc_mailbox_open_finish(mbox);
                imapc_client_stop(mbox->storage->client);
        }
 }
index 8c3b0c2571956f7885a59a18892f6c0f8c0035c5..b842b37695bfe10515cbfd9dead95f36eac8ffee 100644 (file)
@@ -335,7 +335,7 @@ static int imapc_mailbox_open(struct mailbox *box)
        while (ctx.ret == -2)
                imapc_client_run(mbox->storage->client);
        mbox->opening = FALSE;
-       if (ctx.ret < 0) {
+       if (!mbox->open_success) {
                mailbox_close(box);
                return -1;
        }
index f2db0ef775efdc0023b6bf4df947db659395ce9c..c697efbbabbe781e40e37775f0a96338a3e4c518 100644 (file)
@@ -57,6 +57,7 @@ struct imapc_mailbox {
        uint32_t highest_seen_uid;
 
        unsigned int opening:1;
+       unsigned int open_success:1;
        unsigned int new_msgs:1;
 };