From: Timo Sirainen Date: Thu, 28 Feb 2019 13:08:38 +0000 (+0200) Subject: lib-storage: Move index_mail.search_mail to mail_private struct X-Git-Tag: 2.3.8~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=60007d57975895fdfed21bfcc26dc4ba3e4d759b;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Move index_mail.search_mail to mail_private struct --- diff --git a/src/lib-storage/index/imapc/imapc-mail.c b/src/lib-storage/index/imapc/imapc-mail.c index 4c730dd97a..9cc0ea2760 100644 --- a/src/lib-storage/index/imapc/imapc-mail.c +++ b/src/lib-storage/index/imapc/imapc-mail.c @@ -419,7 +419,7 @@ static void imapc_mail_set_seq(struct mail *_mail, uint32_t seq, bool saving) /* searching code handles prefetching internally, elsewhere we want to do it immediately */ - if (!mail->search_mail && !_mail->saving) + if (!mail->mail.search_mail && !_mail->saving) (void)imapc_mail_prefetch(_mail); } diff --git a/src/lib-storage/index/index-mail.c b/src/lib-storage/index/index-mail.c index 416f3685f3..53dfdef836 100644 --- a/src/lib-storage/index/index-mail.c +++ b/src/lib-storage/index/index-mail.c @@ -2008,7 +2008,7 @@ void index_mail_set_seq(struct mail *_mail, uint32_t seq, bool saving) return; } - if (!mail->search_mail) { + if (!mail->mail.search_mail) { index_mail_update_access_parts_pre(_mail); index_mail_update_access_parts_post(_mail); } else { @@ -2122,10 +2122,6 @@ void index_mail_free(struct mail *_mail) { struct index_mail *mail = INDEX_MAIL(_mail); - /* make sure mailbox_search_*() users don't try to free the mail - directly */ - i_assert(!mail->search_mail); - mail->freeing = TRUE; mail->mail.v.close(_mail); diff --git a/src/lib-storage/index/index-mail.h b/src/lib-storage/index/index-mail.h index 62d7ceeaca..58a585203f 100644 --- a/src/lib-storage/index/index-mail.h +++ b/src/lib-storage/index/index-mail.h @@ -155,8 +155,6 @@ struct index_mail { uint8_t header_match_value; bool pop3_state_set:1; - /* mail created by mailbox_search_*() */ - bool search_mail:1; /* close() is being called from mail_free() */ bool freeing:1; }; diff --git a/src/lib-storage/index/index-search.c b/src/lib-storage/index/index-search.c index 6d248fb2e7..e0689a46ff 100644 --- a/src/lib-storage/index/index-search.c +++ b/src/lib-storage/index/index-search.c @@ -1367,7 +1367,7 @@ int index_storage_search_deinit(struct mail_search_context *_ctx) array_foreach_modifiable(&ctx->mails, mailp) { struct index_mail *imail = INDEX_MAIL(*mailp); - imail->search_mail = FALSE; + imail->mail.search_mail = FALSE; mail_free(mailp); } @@ -1686,7 +1686,7 @@ struct mail *index_search_get_mail(struct index_search_context *ctx) ctx->mail_ctx.wanted_fields, ctx->mail_ctx.wanted_headers); imail = INDEX_MAIL(mail); - imail->search_mail = TRUE; + imail->mail.search_mail = TRUE; ctx->mail_ctx.transaction->stats_track = TRUE; array_push_back(&ctx->mails, &mail); diff --git a/src/lib-storage/mail-storage-private.h b/src/lib-storage/mail-storage-private.h index 5e9896b118..2647c5a0bf 100644 --- a/src/lib-storage/mail-storage-private.h +++ b/src/lib-storage/mail-storage-private.h @@ -558,6 +558,8 @@ struct mail_private { const char *get_stream_reason; bool autoexpunged:1; + /* mail created by mailbox_search_*() */ + bool search_mail:1; }; struct mailbox_list_context { diff --git a/src/lib-storage/mail.c b/src/lib-storage/mail.c index 1bb2390487..aab7c4e77c 100644 --- a/src/lib-storage/mail.c +++ b/src/lib-storage/mail.c @@ -36,6 +36,10 @@ void mail_free(struct mail **mail) { struct mail_private *p = (struct mail_private *)*mail; + /* make sure mailbox_search_*() users don't try to free the mail + directly */ + i_assert(!p->search_mail); + p->v.free(*mail); *mail = NULL; }