]> granicus.if.org Git - mutt/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)
committerKevin McCarthy <kevin@8t8.us>
Sun, 21 May 2017 01:52:12 +0000 (18:52 -0700)
commit95c6d0674de68a6f19ab4f86eb779d5124955d95
tree9721b25e633107cab3a298612d0999a573ed8cef
parent24a21418a5edc4aba09025e2516541a17cea3715
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