uint32_t exists_count = reply->num;
const struct mail_index_header *hdr;
- if (mbox == NULL)
+ if (mbox == NULL || IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_NO_MSN_UPDATES))
return;
mbox->exists_count = exists_count;
msgmap = imapc_client_mailbox_get_msgmap(mbox->client_box);
msg_count = imapc_msgmap_count(msgmap);
if (fetch_uid != 0 &&
- IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS)) {
+ (IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_FETCH_MSN_WORKAROUNDS) ||
+ IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_NO_MSN_UPDATES))) {
/* if we know the UID, use own own generated rseq instead of
the potentially broken rseq that the server sent. */
uint32_t fixed_rseq;
}
}
}
+ if (fetch_uid == 0 &&
+ IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_NO_MSN_UPDATES)) {
+ /* UID missing and we're not tracking MSNs */
+ return;
+ }
imapc_mailbox_init_delayed_trans(mbox);
if (imapc_mailbox_msgmap_update(mbox, rseq, fetch_uid,
struct imapc_msgmap *msgmap;
uint32_t lseq, uid, rseq = reply->num;
- if (mbox == NULL || rseq == 0)
+ if (mbox == NULL || rseq == 0 ||
+ IMAPC_BOX_HAS_FEATURE(mbox, IMAPC_FEATURE_NO_MSN_UPDATES))
return;
mbox->prev_skipped_rseq = 0;
{ "delay-login", IMAPC_FEATURE_DELAY_LOGIN },
{ "fetch-bodystructure", IMAPC_FEATURE_FETCH_BODYSTRUCTURE },
{ "fetch-empty-is-expunged", IMAPC_FEATURE_FETCH_EMPTY_IS_EXPUNGED },
+ { "no-msn-updates", IMAPC_FEATURE_NO_MSN_UPDATES },
{ NULL, 0 }
};
IMAPC_FEATURE_DELAY_LOGIN = 0x800,
IMAPC_FEATURE_FETCH_BODYSTRUCTURE = 0x1000,
IMAPC_FEATURE_FETCH_EMPTY_IS_EXPUNGED = 0x4000,
+ IMAPC_FEATURE_NO_MSN_UPDATES = 0x8000,
};
/* </settings checks> */