if ((data_size & 3) != 0)
memset(buf, 0, 4 - (data_size & 3));
- /* remember the transaction uid range */
+ /* remember the transaction sequence range */
if (seq < ctx->first_seq || ctx->first_seq == 0)
ctx->first_seq = seq;
if (seq > ctx->last_seq)
cache->fd = -1;
cache->split_header_pool = pool_alloconly_create("Headers", 512);
- if (mail_cache_open_or_create_file(cache, &hdr) < 0) {
+ if (index->mmap_disable ||
+ mail_cache_open_or_create_file(cache, &hdr) < 0) {
/* failed for some reason - doesn't really matter,
just disable caching. */
mail_cache_file_close(cache);
{
int ret;
- if (cache->locks++ != 0)
+ if (cache->locks != 0)
return 1;
+ if (cache->disabled)
+ return 0;
+
if (nonblock) {
ret = file_try_lock(cache->fd, F_WRLCK);
if (ret < 0)
mail_cache_unlock(cache);
return 0;
}
+ cache->locks++;
}
return ret;
}
int mail_cache_need_reset(struct mail_cache *cache, uint32_t *new_file_seq_r)
{
- if (cache->hdr->file_seq != cache->index->hdr->cache_file_seq) {
+ if (!cache->disabled &&
+ cache->hdr->file_seq != cache->index->hdr->cache_file_seq) {
if (mail_cache_lock(cache, TRUE) == 0) {
*new_file_seq_r = cache->hdr->file_seq;
return TRUE;