Skip to content

Commit

Permalink
imapc: Ignore fetch-msn-workarounds/no-msn-updates during initial FETCH
Browse files Browse the repository at this point in the history
Otherwise duplicate UIDs aren't detected and it causes an assert-crash:

Panic: file imapc-mailbox.c: line 533 (imapc_untagged_fetch): assertion failed: (lseq == mbox->sync_next_lseq)
  • Loading branch information
sirainen authored and villesavolainen committed Apr 12, 2018
1 parent c8efc7e commit 188cc2c
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/lib-storage/index/imapc/imapc-mailbox.c
Expand Up @@ -357,11 +357,14 @@ imapc_mailbox_msgmap_update(struct imapc_mailbox *mbox,

msgmap = imapc_client_mailbox_get_msgmap(mbox->client_box);
msg_count = imapc_msgmap_count(msgmap);
if (fetch_uid != 0 &&
if (fetch_uid != 0 && mbox->state_fetched_success &&
(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. */
the potentially broken rseq that the server sent.
Skip this during the initial FETCH 1:* (UID ..) handling,
or we can't detect duplicate UIDs and will instead
assert-crash later on. */
uint32_t fixed_rseq;

if (imapc_msgmap_uid_to_rseq(msgmap, fetch_uid, &fixed_rseq))
Expand Down

0 comments on commit 188cc2c

Please sign in to comment.