[dovecot-cvs] dovecot/src/lib-index mail-index-open.c,1.15,1.16 mail-index.c,1.71,1.72

cras at procontrol.fi cras at procontrol.fi
Wed Nov 13 02:43:16 EET 2002


Update of /home/cvs/dovecot/src/lib-index
In directory danu:/tmp/cvs-serv20308

Modified Files:
	mail-index-open.c mail-index.c 
Log Message:
If mbox opening fails, don't leave the lock files lying around.



Index: mail-index-open.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-open.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- mail-index-open.c	6 Nov 2002 07:08:04 -0000	1.15
+++ mail-index-open.c	13 Nov 2002 00:43:14 -0000	1.16
@@ -242,9 +242,6 @@
 	if (!mail_index_open_init(index, update_recent))
 		return FALSE;
 
-	if (!index->set_lock(index, MAIL_LOCK_UNLOCK))
-		return FALSE;
-
 	return TRUE;
 }
 
@@ -252,7 +249,7 @@
 				int update_recent, int fast)
 {
         MailIndexHeader hdr;
-	int fd;
+	int fd, failed;
 
 	/* the index file should already be checked that it exists and
 	   we're compatible with it. */
@@ -285,7 +282,12 @@
 	index->filepath = i_strdup(path);
 	index->indexid = hdr.indexid;
 
-	if (!index_open_and_fix(index, update_recent, fast)) {
+	failed = !index_open_and_fix(index, update_recent, fast);
+
+	if (!index->set_lock(index, MAIL_LOCK_UNLOCK))
+		failed = TRUE;
+
+	if (failed) {
 		mail_index_close(index);
 		return FALSE;
 	}
@@ -462,6 +464,8 @@
 
 		return TRUE;
 	} while (0);
+
+	(void)index->set_lock(index, MAIL_LOCK_UNLOCK);
 
 	mail_index_close(index);
 	return FALSE;

Index: mail-index.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index.c,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -d -r1.71 -r1.72
--- mail-index.c	5 Nov 2002 07:26:56 -0000	1.71
+++ mail-index.c	13 Nov 2002 00:43:14 -0000	1.72
@@ -418,7 +418,8 @@
 	}
 
 	if (index->lock_type == MAIL_LOCK_EXCLUSIVE) {
-		mail_modifylog_notify_lock_drop(index->modifylog);
+		if (index->modifylog != NULL)
+			mail_modifylog_notify_lock_drop(index->modifylog);
 
 		/* dropping exclusive lock (either unlock or to shared) */
 		keep_fsck = (index->set_flags & MAIL_INDEX_FLAG_FSCK) != 0;




More information about the dovecot-cvs mailing list