[dovecot-cvs] dovecot/src/lib-index mail-custom-flags.c,1.11,1.12 mail-index-open.c,1.11,1.12 mail-index.c,1.62,1.63 mail-modifylog.c,1.31,1.32

cras at procontrol.fi cras at procontrol.fi
Thu Oct 24 00:41:38 EEST 2002


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

Modified Files:
	mail-custom-flags.c mail-index-open.c mail-index.c 
	mail-modifylog.c 
Log Message:
file_wait_lock() now takes timeout-parameter so one badly behaving process
won't start creating tons of lock-waiting processes.



Index: mail-custom-flags.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-custom-flags.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- mail-custom-flags.c	19 Oct 2002 16:40:17 -0000	1.11
+++ mail-custom-flags.c	23 Oct 2002 20:41:35 -0000	1.12
@@ -195,7 +195,7 @@
 	if (mcf->lock_type == type)
 		return TRUE;
 
-	if (file_wait_lock(mcf->fd, type) < 0)
+	if (file_wait_lock(mcf->fd, type, DEFAULT_LOCK_TIMEOUT) <= 0)
 		return index_cf_set_syscall_error(mcf, "file_wait_lock()");
 
 	mcf->lock_type = type;

Index: mail-index-open.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index-open.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- mail-index-open.c	20 Oct 2002 02:35:51 -0000	1.11
+++ mail-index-open.c	23 Oct 2002 20:41:35 -0000	1.12
@@ -254,7 +254,7 @@
 		return index_file_set_syscall_error(index, path, "open()");
 
 	/* if index is being created, we'll wait here until it's finished */
-	if (file_wait_lock(fd, F_RDLCK) < 0) {
+	if (file_wait_lock(fd, F_RDLCK, DEFAULT_LOCK_TIMEOUT) <= 0) {
 		index_file_set_syscall_error(index, path, "file_wait_lock()");
 		(void)close(fd);
 		return FALSE;
@@ -267,7 +267,7 @@
 		return FALSE;
 	}
 
-	if (file_wait_lock(fd, F_UNLCK) < 0) {
+	if (file_wait_lock(fd, F_UNLCK, 0) <= 0) {
 		index_file_set_syscall_error(index, path, "file_wait_lock()");
 		(void)close(fd);
 		return FALSE;
@@ -305,7 +305,7 @@
 		return FALSE;
 	}
 
-	if (file_wait_lock(fd, F_WRLCK) < 0) {
+	if (file_wait_lock(fd, F_WRLCK, DEFAULT_LOCK_TIMEOUT) <= 0) {
 		index_file_set_syscall_error(index, path, "file_wait_lock()");
 		return FALSE;
 	}

Index: mail-index.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-index.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -d -r1.62 -r1.63
--- mail-index.c	23 Oct 2002 19:55:13 -0000	1.62
+++ mail-index.c	23 Oct 2002 20:41:35 -0000	1.63
@@ -275,7 +275,7 @@
 
 	/* use our own locking here so we don't mess up with any other
 	   index states, like inconsistency. */
-	if (file_wait_lock(index->fd, F_WRLCK) < 0)
+	if (file_wait_lock(index->fd, F_WRLCK, DEFAULT_LOCK_TIMEOUT) <= 0)
 		return index_set_syscall_error(index, "file_wait_lock()");
 
 	mail_index_update_header_changes(index);
@@ -284,7 +284,7 @@
 	if (failed)
 		index_set_syscall_error(index, "msync()");
 
-	if (file_wait_lock(index->fd, F_UNLCK) < 0)
+	if (file_wait_lock(index->fd, F_UNLCK, 0) <= 0)
 		return index_set_syscall_error(index, "file_wait_lock()");
 
 	return !failed;
@@ -294,7 +294,7 @@
 {
 	MailLockType old_lock_type;
 
-	if (file_wait_lock(index->fd, F_UNLCK) < 0)
+	if (file_wait_lock(index->fd, F_UNLCK, 0) <= 0)
 		return index_set_syscall_error(index, "file_wait_lock()");
 
 	old_lock_type = index->lock_type;
@@ -328,7 +328,8 @@
 		return FALSE;
 	}
 
-	if (file_wait_lock(index->fd, MAIL_LOCK_TO_FLOCK(lock_type)) < 0)
+	if (file_wait_lock(index->fd, MAIL_LOCK_TO_FLOCK(lock_type),
+			   DEFAULT_LOCK_TIMEOUT) <= 0)
 		return index_set_syscall_error(index, "file_wait_lock()");
 	index->lock_type = lock_type;
 
@@ -355,7 +356,8 @@
 			if (!mail_index_lock_remove(index))
 				return FALSE;
 
-			if (file_wait_lock(index->fd, MAIL_LOCK_EXCLUSIVE) < 0)
+			if (file_wait_lock(index->fd, MAIL_LOCK_EXCLUSIVE,
+					   DEFAULT_LOCK_TIMEOUT) <= 0)
 				return index_set_syscall_error(index,
 							"file_wait_lock()");
 			index->lock_type = MAIL_LOCK_EXCLUSIVE;

Index: mail-modifylog.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-modifylog.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- mail-modifylog.c	23 Oct 2002 19:49:23 -0000	1.31
+++ mail-modifylog.c	23 Oct 2002 20:41:35 -0000	1.32
@@ -413,7 +413,7 @@
 		return -1;
 	}
 
-	if (file_wait_lock(fd, F_RDLCK) < 0) {
+	if (file_wait_lock(fd, F_RDLCK, DEFAULT_LOCK_TIMEOUT) <= 0) {
 		modifylog_set_syscall_error(file, "file_wait_lock()");
 		(void)close(fd);
 		return -1;




More information about the dovecot-cvs mailing list