changeset 6589:0e46072f797a HEAD

Don't give "Newly added field got lost unexpectedly" errors when cache file is created while adding a new field.
author Timo Sirainen <tss@iki.fi>
date Sun, 21 Oct 2007 15:39:42 +0300
parents fd01ec16611f
children b9b201f5c581
files src/lib-index/mail-cache-transaction.c
diffstat 1 files changed, 4 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-cache-transaction.c	Sun Oct 21 15:28:53 2007 +0300
+++ b/src/lib-index/mail-cache-transaction.c	Sun Oct 21 15:39:42 2007 +0300
@@ -722,9 +722,6 @@
 	buffer_t *buffer;
 	int ret;
 
-	cache->fields[field_idx].last_used = ioloop_time;
-	cache->fields[field_idx].used = TRUE;
-
 	if ((ret = mail_cache_transaction_lock(ctx)) <= 0) {
 		/* create the cache file if it doesn't exist yet */
 		if (ctx->tried_compression)
@@ -743,6 +740,10 @@
 		return -1;
 	}
 
+	/* update these only after reading */
+	cache->fields[field_idx].last_used = ioloop_time;
+	cache->fields[field_idx].used = TRUE;
+
 	if (cache->field_file_map[field_idx] != (uint32_t)-1) {
 		/* it was already added */
 		if (mail_cache_unlock(cache) < 0)