[dovecot-cvs] dovecot/src/lib-index mail-transaction-log-view.c, 1.27, 1.28

cras at dovecot.org cras at dovecot.org
Sun Sep 12 15:14:22 EEST 2004


Update of /var/lib/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv1106

Modified Files:
	mail-transaction-log-view.c 
Log Message:
Don't check extra updates data_id validity if we're just skipping over them.



Index: mail-transaction-log-view.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-transaction-log-view.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -d -r1.27 -r1.28
--- mail-transaction-log-view.c	10 Sep 2004 12:31:28 -0000	1.27
+++ mail-transaction-log-view.c	12 Sep 2004 12:14:19 -0000	1.28
@@ -236,9 +236,10 @@
 	return view->broken;
 }
 
-static int log_view_get_next(struct mail_transaction_log_view *view,
-			     const struct mail_transaction_header **hdr_r,
-			     const void **data_r)
+static int
+log_view_get_next(struct mail_transaction_log_view *view,
+		  const struct mail_transaction_header **hdr_r,
+		  const void **data_r, enum mail_transaction_type type_mask)
 {
 	const struct mail_transaction_header *hdr;
 	struct mail_transaction_log_file *file;
@@ -355,7 +356,10 @@
 		if (view->max_extra_data_id > max_data_id)
 			max_data_id = view->max_extra_data_id;
 
-		if (*data_id >= max_data_id) {
+		/* don't check this error if we're just skipping over this.
+		   we could have skipped over the extra_intro just before this
+		   which is the reason we don't yet know it. */
+		if (*data_id >= max_data_id && (type_mask & hdr->type) != 0) {
 			mail_transaction_log_file_set_corrupted(file,
 				"extra record update out of range (%u >= %u)",
 				*data_id, max_data_id);
@@ -382,7 +386,8 @@
 	if (view->broken)
 		return -1;
 
-	while ((ret = log_view_get_next(view, &hdr, &data)) > 0) {
+	while ((ret = log_view_get_next(view, &hdr, &data,
+					view->type_mask)) > 0) {
 		if ((view->type_mask & hdr->type) != 0)
 			break;
 



More information about the dovecot-cvs mailing list