From: Timo Sirainen Date: Fri, 9 Dec 2016 13:06:05 +0000 (+0200) Subject: imapc: Don't send NOOP immediately after SELECT X-Git-Tag: 2.3.0.rc1~2454 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ee22a48c8ab37aad0bf5534b8d4131e6639f9454;p=thirdparty%2Fdovecot%2Fcore.git imapc: Don't send NOOP immediately after SELECT NOOP is normally used by mailbox syncing to check if there are any changes done by other concurrent IMAP sessions. But doing it immediately after SELECT is unnecessary, because nothing could have changed. --- diff --git a/src/lib-storage/index/imapc/imapc-sync.c b/src/lib-storage/index/imapc/imapc-sync.c index 4d94f9e36f..1b3f7df25c 100644 --- a/src/lib-storage/index/imapc/imapc-sync.c +++ b/src/lib-storage/index/imapc/imapc-sync.c @@ -550,8 +550,11 @@ imapc_noop_if_needed(struct imapc_mailbox *mbox, enum mailbox_sync_flags flags) enum imapc_capability capabilities; capabilities = imapc_client_get_capabilities(mbox->storage->client->client); - if ((capabilities & IMAPC_CAPABILITY_IDLE) == 0 || - (flags & MAILBOX_SYNC_FLAG_FULL_READ) != 0) { + if (!mbox->initial_sync_done) { + /* we just SELECTed/EXAMINEd the mailbox, don't do another + NOOP. */ + } else if ((capabilities & IMAPC_CAPABILITY_IDLE) == 0 || + (flags & MAILBOX_SYNC_FLAG_FULL_READ) != 0) { /* do NOOP to make sure we have the latest changes before starting sync. this is necessary either because se don't support IDLE at all, or because we want to be sure that we