mail_set_aborted(mail);
return -1;
}
+ mail->mail_metadata_accessed = TRUE;
mail->transaction->stats.stat_lookup_count++;
path = cydir_mail_get_path(mail);
mail_set_aborted(_mail);
return -1;
}
+ _mail->mail_stream_opened = TRUE;
do {
if (mail->open_file != NULL) {
mail_set_aborted(_mail);
return -1;
}
+ _mail->mail_stream_opened = TRUE;
ret = sdbox_mail_file_set(mail);
if (ret < 0)
if (_mail->lookup_abort != MAIL_LOOKUP_ABORT_NEVER)
return -1;
+ _mail->mail_stream_opened = TRUE;
/* drop any fields that we may already be fetching currently */
fields &= ~mail->fetching_fields;
_mail->box->vname, _mail->uid,
mail->mail.get_stream_reason);
}
+ _mail->mail_stream_opened = TRUE;
if (!data->initialized_wrapper_stream &&
_mail->transaction->stats_track) {
mail->mail.mail.has_nuls = FALSE;
mail->mail.mail.has_no_nuls = FALSE;
mail->mail.mail.saving = FALSE;
+ mail->mail.mail.mail_stream_opened = FALSE;
+ mail->mail.mail.mail_metadata_accessed = FALSE;
}
void index_mail_close(struct mail *_mail)
mail_set_aborted(mail);
return -1;
}
+ mail->mail_metadata_accessed = TRUE;
if (imail->data.access_part != 0 &&
imail->data.stream == NULL) {
mail_set_aborted(_mail);
return -1;
}
+ _mail->mail_stream_opened = TRUE;
if (mbox->mbox_stream != NULL &&
istream_raw_mbox_is_corrupted(mbox->mbox_stream)) {
mail_set_aborted(mail);
return -1;
}
+ mail->mail_metadata_accessed = TRUE;
mail->transaction->stats.fstat_lookup_count++;
if (i_stream_stat(mail->box->input, TRUE, &st) < 0) {
unsigned int has_nuls:1; /* message data is known to contain NULs */
unsigned int has_no_nuls:1; /* -''- known to not contain NULs */
+ /* Mail's header/body stream was opened within this request.
+ If lookup_abort!=MAIL_LOOKUP_ABORT_NEVER, this can't become TRUE. */
+ bool mail_stream_opened:1;
+ /* Mail's fast metadata was accessed within this request, e.g. the mail
+ file was stat()ed. If mail_stream_opened==TRUE, this value isn't
+ accurate anymore, because some backends may always set this when
+ stream is opened and some don't. If lookup_abort is
+ MAIL_LOOKUP_ABORT_NOT_IN_CACHE, this can't become TRUE. */
+ bool mail_metadata_accessed:1;
+
/* If the lookup is aborted, error is set to MAIL_ERROR_NOTPOSSIBLE */
enum mail_lookup_abort lookup_abort;
};