const char *path;
int fd, ret;
- if (mail->lookup_abort >= MAIL_LOOKUP_ABORT_NOT_IN_CACHE) {
- mail_set_aborted(mail);
+ if (!mail_metadata_access_start(mail))
return -1;
- }
- mail->mail_metadata_accessed = TRUE;
if (imail->data.access_part != 0 &&
imail->data.stream == NULL) {
struct raw_mailbox *mbox = RAW_MAILBOX(mail->box);
const struct stat *st;
- if (mail->lookup_abort >= MAIL_LOOKUP_ABORT_NOT_IN_CACHE) {
- mail_set_aborted(mail);
+ if (!mail_metadata_access_start(mail))
return -1;
- }
- mail->mail_metadata_accessed = TRUE;
mail->transaction->stats.fstat_lookup_count++;
if (i_stream_stat(mail->box->input, TRUE, &st) < 0) {
/* Attempt to start accessing the mail stream. Returns TRUE is ok, FALSE if
prevented by mail->lookup_abort. */
bool mail_stream_access_start(struct mail *mail);
+/* Attempt to start accessing the mail metadata. Returns TRUE is ok, FALSE if
+ prevented by mail->lookup_abort. */
+bool mail_metadata_access_start(struct mail *mail);
/* Emit mail opened events */
void mail_opened_event(struct mail *mail);
return TRUE;
}
+bool mail_metadata_access_start(struct mail *mail)
+{
+ if (mail->lookup_abort >= MAIL_LOOKUP_ABORT_NOT_IN_CACHE) {
+ mail_set_aborted(mail);
+ return FALSE;
+ }
+ mail->mail_metadata_accessed = TRUE;
+ return TRUE;
+}
+
void mail_opened_event(struct mail *mail)
{
struct mail_private *pmail =