]> granicus.if.org Git - mutt/commit
Enable the idata->check_status using bit operations.
authorKevin McCarthy <kevin@8t8.us>
Thu, 6 Jun 2019 23:03:42 +0000 (16:03 -0700)
committerKevin McCarthy <kevin@8t8.us>
Thu, 6 Jun 2019 23:03:42 +0000 (16:03 -0700)
commitdd327606beb81882880b801488d0a2f05953b4b1
tree1ebf8bc80944f1f16dcdc24740aab94b9ac79a72
parent4d95b2cff941b8b10ef332b24d47d4aca8ab37cc
Enable the idata->check_status using bit operations.

Commit e3f66d7e fixed dropped new mail notications, removing the
unsetting of idata->reopen IMAP_NEWMAIL_PENDING in imap_cmd_finish()
when an EXPUNGE was processed.

However, imap_cmd_finish() can be called twice by
imap_check_mailbox().  First as part of the imap_exec(), and manually
again just below.

Now that the IMAP_NEWMAIL_PENDING still exists, a second call could
overwrite idata->check_status if both reopen flags were set.

This unfortunately affects update_index(), which behaves differently
for MUTT_REOPENED.

I need to change the return value of mx_check_mailbox() in master to
preserve all the bits, so the index can both notify of new mail and
update_index() properly.

For stable, the best fix is to use bit operators to enable the
check_status flags in imap_cmd_finish() (and cmd_parse_fetch for
flags), and keep the imap_check_mailbox() priority of setting its
return value (it prioritizes IMAP_EXCHANGE_PENDING).
imap/command.c