changeset 12394:7f8f73bed7f9

lib-index: Fix to transaction log read optimization. The log wasn't always refreshed while locked when it should have.
author Timo Sirainen <tss@iki.fi>
date Fri, 05 Nov 2010 18:58:56 +0000
parents 57477db05aff
children 878746da7992
files src/lib-index/mail-transaction-log-file.c
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-transaction-log-file.c	Fri Nov 05 12:24:01 2010 +0000
+++ b/src/lib-index/mail-transaction-log-file.c	Fri Nov 05 18:58:56 2010 +0000
@@ -1564,9 +1564,6 @@
 		end_offset = file->sync_offset;
 	}
 
-	if (file->locked)
-		file->locked_sync_offset_updated = TRUE;
-
 	if (file->buffer != NULL && file->buffer_offset <= start_offset) {
 		/* see if we already have it */
 		size = buffer_get_used_size(file->buffer);
@@ -1574,6 +1571,12 @@
 			return 1;
 	}
 
+	if (file->locked) {
+		/* set this only when we've synced to end of file while locked
+		   (either end_offset=(uoff_t)-1 or we had to read anyway) */
+		file->locked_sync_offset_updated = TRUE;
+	}
+
 	if (MAIL_TRANSACTION_LOG_FILE_IN_MEMORY(file)) {
 		if (start_offset < file->buffer_offset) {
 			/* we had moved the log to memory but failed to read