From 9a717bf84366bdd2ee25f95c49ffc911999dbd1f Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 23 Jun 2015 11:12:38 +0200 Subject: [PATCH] imapc: If login is aborted at deinit, don't log an error. --- src/lib-storage/index/imapc/imapc-list.c | 2 ++ src/lib-storage/index/imapc/imapc-storage.c | 8 ++++++++ src/lib-storage/index/imapc/imapc-storage.h | 1 + 3 files changed, 11 insertions(+) diff --git a/src/lib-storage/index/imapc/imapc-list.c b/src/lib-storage/index/imapc/imapc-list.c index 733b537b63..ceb10de12a 100644 --- a/src/lib-storage/index/imapc/imapc-list.c +++ b/src/lib-storage/index/imapc/imapc-list.c @@ -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) { diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index f571752122..b661a6e534 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -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); diff --git a/src/lib-storage/index/imapc/imapc-storage.h b/src/lib-storage/index/imapc/imapc-storage.h index 7712819bc1..ca91e32bf3 100644 --- a/src/lib-storage/index/imapc/imapc-storage.h +++ b/src/lib-storage/index/imapc/imapc-storage.h @@ -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 { -- 2.47.3