It doesn't break, but it's unnecessary work.
static void index_mail_try_set_attachment_keywords(struct index_mail *mail)
{
+ if (mail->data.attachment_flags_updating) {
+ /* We can get here from mail_get_parts() */
+ return;
+ }
+ mail->data.attachment_flags_updating = TRUE;
enum mail_lookup_abort orig_lookup_abort = mail->mail.mail.lookup_abort;
mail->mail.mail.lookup_abort = MAIL_LOOKUP_ABORT_NOT_IN_CACHE;
(void)mail_set_attachment_keywords(&mail->mail.mail);
mail->mail.mail.lookup_abort = orig_lookup_abort;
+ mail->data.attachment_flags_updating = FALSE;
}
static bool
bool destroy_callback_set:1;
bool prefetch_sent:1;
bool header_parser_initialized:1;
+ bool attachment_flags_updating:1;
/* virtual_size and physical_size may not match the stream size.
Try to avoid trusting them too much. */
bool inexact_total_sizes:1;