changeset 2963:c0bdb35277fc HEAD

If log file sequences get broken, complain instead of crashing.
author Timo Sirainen <tss@iki.fi>
date Mon, 13 Dec 2004 02:55:42 +0200
parents d048ef0a67f2
children e032167a05ca
files src/lib-index/mail-index-sync.c
diffstat 1 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-index-sync.c	Mon Dec 13 02:24:27 2004 +0200
+++ b/src/lib-index/mail-index-sync.c	Mon Dec 13 02:55:42 2004 +0200
@@ -4,7 +4,7 @@
 #include "buffer.h"
 #include "mail-index-view-private.h"
 #include "mail-index-sync-private.h"
-#include "mail-transaction-log.h"
+#include "mail-transaction-log-private.h"
 #include "mail-transaction-util.h"
 #include "mail-cache.h"
 
@@ -342,6 +342,17 @@
 
 	ctx->view = mail_index_view_open(index);
 
+	if (index->hdr->log_file_seq == seq &&
+	    index->hdr->log_file_int_offset > offset) {
+		/* synced offset is greater than what we have available.
+		   the log sequences have gotten messed up. */
+		mail_transaction_log_file_set_corrupted(index->log->head,
+			"log_file_int_offset (%u) > log size (%"PRIuUOFF_T")",
+			seq, index->hdr->log_file_int_offset, offset);
+                mail_index_sync_rollback(ctx);
+		return -1;
+	}
+
 	if (mail_transaction_log_view_set(ctx->view->log_view,
 					  index->hdr->log_file_seq,
 					  index->hdr->log_file_int_offset,