This especially fixes mail_get_header_stream() with imapc and
imapc_features=fetch-headers, because it works by first fetching the
specific headers and putting them to the cache transaction, then later on
relying on index_mail_get_header_stream() to get them from the transaction.
Before this fix they wouldn't be found, which triggered another unnecessary
FETCH BODY.PEEK[HEADER].
const struct mail_cache_transaction_rec *recs;
unsigned int i, count;
- if (MAIL_CACHE_IS_UNUSABLE(ctx->cache) ||
- ctx->cache_file_seq != ctx->cache->hdr->file_seq) {
+ if (!MAIL_INDEX_IS_IN_MEMORY(ctx->cache->index) &&
+ (MAIL_CACHE_IS_UNUSABLE(ctx->cache) ||
+ ctx->cache_file_seq != ctx->cache->hdr->file_seq)) {
/* Cache was compressed during this transaction. We can't
safely use the data anymore, since its fields won't match
cache->file_fields_map. */