X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=imap%2Fimap.c;h=40489b439ecacf75ecc515551c51ecaafa77f5c3;hp=76d9f8b1a4e35996cdef5ad2f36a3220dfcf9f5b;hb=2c522cac0278dd774896f25048da2c5cc1d9cf99;hpb=5b5275063730518006979a40a3ff9c994886ee3f diff --git a/imap/imap.c b/imap/imap.c index 76d9f8b..40489b4 100644 --- a/imap/imap.c +++ b/imap/imap.c @@ -968,13 +968,6 @@ int imap_sync_mailbox (CONTEXT * ctx, int expunge, int *index_hint) return -1; } - /* CLOSE purges deleted messages. If we don't want to purge them, we must - * tell imap_close_mailbox not to issue the CLOSE command */ - if (expunge) - idata->noclose = 0; - else - idata->noclose = 1; - /* This function is only called when the calling code expects the context * to be changed. */ imap_allow_reopen (ctx); @@ -1051,6 +1044,12 @@ int imap_sync_mailbox (CONTEXT * ctx, int expunge, int *index_hint) } } + if (ctx->closing) { + if (imap_exec (idata, "CLOSE", 0)) + mutt_error (_("CLOSE failed")); + idata->state = IMAP_AUTHENTICATED; + } + rc = 0; out: if (cmd.data) @@ -1062,7 +1061,7 @@ out: return rc; } -/* imap_close_mailbox: issue close command if neccessary, reset IMAP_DATA */ +/* imap_close_mailbox: clean up IMAP data in CONTEXT */ void imap_close_mailbox (CONTEXT * ctx) { IMAP_DATA *idata; @@ -1073,13 +1072,17 @@ void imap_close_mailbox (CONTEXT * ctx) if (!idata) return; - if ((idata->status != IMAP_FATAL) && - (idata->state == IMAP_SELECTED) && (ctx == idata->ctx)) { - if (!(idata->noclose) && imap_exec (idata, "CLOSE", 0)) + if (ctx == idata->ctx) { + if (idata->state = IMAP_SELECTED) { + /* mx_close_mailbox won't sync if there are no deleted messages + * and the mailbox is unchanged, so we may have to close here */ + if (idata->status != IMAP_FATAL && !ctx->deleted && + imap_exec (idata, "CLOSE", 0)) mutt_error (_("CLOSE failed")); + idata->state = IMAP_AUTHENTICATED; + } idata->reopen &= IMAP_REOPEN_ALLOW; - idata->state = IMAP_AUTHENTICATED; FREE (&(idata->mailbox)); mutt_free_list (&idata->flags); idata->ctx = NULL;