From df596e34b604e6ac873de9ca92fb5df2a5fed45f Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 15 Jan 2016 15:40:56 +0200 Subject: [PATCH] imapc: Added imapc_features = no-examine --- src/lib-storage/index/imapc/imapc-settings.c | 1 + src/lib-storage/index/imapc/imapc-settings.h | 3 ++- src/lib-storage/index/imapc/imapc-storage.c | 6 ++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/lib-storage/index/imapc/imapc-settings.c b/src/lib-storage/index/imapc/imapc-settings.c index 549593fa96..b47af9313e 100644 --- a/src/lib-storage/index/imapc/imapc-settings.c +++ b/src/lib-storage/index/imapc/imapc-settings.c @@ -87,6 +87,7 @@ static const struct imapc_feature_list imapc_feature_list[] = { { "gmail-migration", IMAPC_FEATURE_GMAIL_MIGRATION }, { "search", IMAPC_FEATURE_SEARCH }, { "zimbra-workarounds", IMAPC_FEATURE_ZIMBRA_WORKAROUNDS }, + { "no-examine", IMAPC_FEATURE_NO_EXAMINE }, { NULL, 0 } }; diff --git a/src/lib-storage/index/imapc/imapc-settings.h b/src/lib-storage/index/imapc/imapc-settings.h index 6aba885d10..34b107716b 100644 --- a/src/lib-storage/index/imapc/imapc-settings.h +++ b/src/lib-storage/index/imapc/imapc-settings.h @@ -10,7 +10,8 @@ enum imapc_features { IMAPC_FEATURE_FETCH_HEADERS = 0x04, IMAPC_FEATURE_GMAIL_MIGRATION = 0x08, IMAPC_FEATURE_SEARCH = 0x10, - IMAPC_FEATURE_ZIMBRA_WORKAROUNDS = 0x20 + IMAPC_FEATURE_ZIMBRA_WORKAROUNDS = 0x20, + IMAPC_FEATURE_NO_EXAMINE = 0x40 }; /* */ diff --git a/src/lib-storage/index/imapc/imapc-storage.c b/src/lib-storage/index/imapc/imapc-storage.c index 6767652f9d..0670c260cb 100644 --- a/src/lib-storage/index/imapc/imapc-storage.c +++ b/src/lib-storage/index/imapc/imapc-storage.c @@ -441,6 +441,12 @@ imapc_mailbox_exists(struct mailbox *box, bool auto_boxes ATTR_UNUSED, static bool imapc_mailbox_want_examine(struct imapc_mailbox *mbox) { + if (IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_NO_EXAMINE)) { + /* mainly a Courier-workaround: With POP3-only Maildir that + doesn't have UIDVALIDITY set, EXAMINE won't generate a + permanent UIDVALIDITY while SELECT will. */ + return FALSE; + } return (mbox->box.flags & MAILBOX_FLAG_DROP_RECENT) == 0 && ((mbox->box.flags & MAILBOX_FLAG_READONLY) != 0 || (mbox->box.flags & MAILBOX_FLAG_SAVEONLY) != 0); -- 2.47.3