Skip to content

Commit

Permalink
lib-index: Fix cache lookups from uncommitted transactions with in-me…
Browse files Browse the repository at this point in the history
…mory indexes

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].
  • Loading branch information
sirainen authored and villesavolainen committed Jun 16, 2017
1 parent d8c688a commit 5c92541
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/lib-index/mail-cache-transaction.c
Expand Up @@ -289,8 +289,9 @@ mail_cache_transaction_lookup_rec(struct mail_cache_transaction_ctx *ctx,
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. */
Expand Down

0 comments on commit 5c92541

Please sign in to comment.