]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
imapc: If login is aborted at deinit, don't log an error.
authorTimo Sirainen <tss@iki.fi>
Tue, 23 Jun 2015 09:12:38 +0000 (11:12 +0200)
committerTimo Sirainen <tss@iki.fi>
Tue, 23 Jun 2015 09:12:38 +0000 (11:12 +0200)
src/lib-storage/index/imapc/imapc-list.c
src/lib-storage/index/imapc/imapc-storage.c
src/lib-storage/index/imapc/imapc-storage.h

index 733b537b63e8e78df87c73e85ae6e6d6eb3cd10a..ceb10de12a1c850451cef16ac92d4ccf885db68a 100644 (file)
@@ -87,6 +87,8 @@ static void imapc_list_deinit(struct mailbox_list *_list)
 {
        struct imapc_mailbox_list *list = (struct imapc_mailbox_list *)_list;
 
+       list->client->destroying = TRUE;
+
        /* make sure all pending commands are aborted before anything is
           deinitialized */
        if (list->client != NULL) {
index f571752122ee711ae81b49584249e2b308ec693c..b661a6e534903c24dbe6ce8a9930a2b01e439f39 100644 (file)
@@ -207,6 +207,12 @@ imapc_storage_client_login(const struct imapc_command_reply *reply,
 
        if (reply->state == IMAPC_COMMAND_STATE_OK)
                return;
+       if (client->destroying &&
+           reply->state == IMAPC_COMMAND_STATE_DISCONNECTED) {
+               /* user's work was finished before imapc login finished -
+                  it's not an error */
+               return;
+       }
 
        i_error("imapc: Authentication failed: %s", reply->text_full);
        client->auth_failed = TRUE;
@@ -350,6 +356,8 @@ static void imapc_storage_destroy(struct mail_storage *_storage)
 {
        struct imapc_storage *storage = (struct imapc_storage *)_storage;
 
+       storage->client->destroying = TRUE;
+
        /* make sure all pending commands are aborted before anything is
           deinitialized */
        imapc_client_disconnect(storage->client->client);
index 7712819bc10a8ec33b6387322b817ad9e99a9359..ca91e32bf34358abeb08660df6549389d39e3104 100644 (file)
@@ -52,6 +52,7 @@ struct imapc_storage_client {
        ARRAY(struct imapc_storage_event_callback) untagged_callbacks;
 
        unsigned int auth_failed:1;
+       unsigned int destroying:1;
 };
 
 struct imapc_storage {