changeset 6997:0008fb28e62b HEAD

T_FRAME() changes caused infinite looping.
author Timo Sirainen <tss@iki.fi>
date Tue, 18 Dec 2007 13:46:33 +0200
parents 021b6900a900
children 0375f2c0a1f6
files src/plugins/acl/acl-backend-vfile.c
diffstat 1 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/acl/acl-backend-vfile.c	Mon Dec 17 17:32:26 2007 +0200
+++ b/src/plugins/acl/acl-backend-vfile.c	Tue Dec 18 13:46:33 2007 +0200
@@ -292,7 +292,7 @@
 	struct stat st;
 	const char *line;
 	unsigned int linenum;
-	int fd, ret = 1;
+	int fd, ret = 0;
 
 	*is_dir_r = FALSE;
 
@@ -360,24 +360,25 @@
 			break;
 	}
 
-	if (input->stream_errno != 0) {
+	if (ret < 0) {
+		/* parsing failure */
+	} else if (input->stream_errno != 0) {
 		if (input->stream_errno == ESTALE && try_retry)
 			ret = 0;
 		else {
 			ret = -1;
 			i_error("read(%s) failed: %m", path);
 		}
-	}
-
-	if (ret > 0) {
+	} else {
 		if (fstat(fd, &st) < 0) {
 			if (errno == ESTALE && try_retry)
 				ret = 0;
 			else {
 				ret = -1;
-				i_error("read(%s) failed: %m", path);
+				i_error("fstat(%s) failed: %m", path);
 			}
 		} else {
+			ret = 1;
 			validity->last_read_time = ioloop_time;
 			validity->last_mtime = st.st_mtime;
 			validity->last_size = st.st_size;