Mercurial > dovecot > original-hg > dovecot-2.1
changeset 14885:0b0399f1b6aa
lib-index: Fixed invalidating buffered cache file with map_with_read.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 29 Jan 2013 17:55:20 +0200 |
parents | 99b7be36631b |
children | b314c97d4bbf |
files | src/lib-index/mail-cache-fields.c src/lib-index/mail-cache-sync-update.c src/lib-index/mail-cache.c |
diffstat | 3 files changed, 9 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-cache-fields.c Tue Jan 22 16:53:52 2013 +0200 +++ b/src/lib-index/mail-cache-fields.c Tue Jan 29 17:55:20 2013 +0200 @@ -285,6 +285,8 @@ file_cache_invalidate(cache->file_cache, offset, field_hdr_size); } + if (cache->read_buf != NULL && invalidate) + buffer_set_used_size(cache->read_buf, 0); ret = mail_cache_map(cache, offset, field_hdr_size, &data); if (ret < 0) return -1;
--- a/src/lib-index/mail-cache-sync-update.c Tue Jan 22 16:53:52 2013 +0200 +++ b/src/lib-index/mail-cache-sync-update.c Tue Jan 29 17:55:20 2013 +0200 @@ -1,6 +1,7 @@ /* Copyright (c) 2004-2012 Dovecot authors, see the included COPYING file */ #include "lib.h" +#include "buffer.h" #include "file-cache.h" #include "mail-cache-private.h" #include "mail-index-view-private.h" @@ -144,6 +145,8 @@ ctx->invalidate_highwater - *new_cache_offset); ctx->invalidate_highwater = *new_cache_offset; + if (cache->read_buf != NULL) + buffer_set_used_size(cache->read_buf, 0); } } @@ -188,4 +191,6 @@ cache->fd, cache->locked); } file_cache_invalidate(cache->file_cache, 0, (uoff_t)-1); + if (cache->read_buf != NULL) + buffer_set_used_size(cache->read_buf, 0); }
--- a/src/lib-index/mail-cache.c Tue Jan 22 16:53:52 2013 +0200 +++ b/src/lib-index/mail-cache.c Tue Jan 29 17:55:20 2013 +0200 @@ -705,6 +705,8 @@ file_cache_invalidate(cache->file_cache, 0, sizeof(struct mail_cache_header)); } + if (cache->read_buf != NULL) + buffer_set_used_size(cache->read_buf, 0); if (mail_cache_map(cache, 0, 0, &data) > 0) cache->hdr_copy = *cache->hdr; else {