]> granicus.if.org Git - neomutt/commit
Move the IMAP msn field to IMAP_HEADER_DATA. (see #3942)
authorKevin McCarthy <kevin@8t8.us>
Sun, 21 May 2017 01:52:12 +0000 (18:52 -0700)
committerRichard Russon <rich@flatcap.org>
Wed, 24 May 2017 00:11:07 +0000 (01:11 +0100)
commitf100ebd379aa44e23b7e422d5c329db94d76f782
tree35b9c3aca4dd837c12182a98efabcc34c8bba40f
parent896712e157665f32d153512420a7016e665527d2
Move the IMAP msn field to IMAP_HEADER_DATA. (see #3942)

Ticket 3942 revealed that it is possible for a FETCH to have gaps in
the MSN numbers of the results.  The code makes many assumptions that
equate context index counts and MSN.  This is the first in a series of
commits fixing that assumption.

The header->index field is supposed to hold the SORT_ORDER index
number of the message.  If there are gaps in the MSN, than the highext
MSN can in fact be out of the range 0..ctx->msgcount-1.

After studying the code, I believe curs_main.c would actually work
with header->index values out of the range, at least for IMAP.  But
some other parts of the code, such as mutt_reopen_mailbox(), do rely
on the values being a valid index to ctx->hdrs[].  And the
intertwining of menu->oldcurrent with header->index values makes me
nervous about future changes.

So, to be safe, move the MSN to its own field in IMAP_HEADER_DATA.

The next commit will fix the EXPUNGE behavior.
imap/message.c
imap/message.h