dovecot: T_FRAME() changes caused infinite looping.
dovecot at dovecot.org
dovecot at dovecot.org
Tue Dec 18 13:46:38 EET 2007
details: http://hg.dovecot.org/dovecot/rev/0008fb28e62b
changeset: 6997:0008fb28e62b
user: Timo Sirainen <tss at iki.fi>
date: Tue Dec 18 13:46:33 2007 +0200
description:
T_FRAME() changes caused infinite looping.
diffstat:
1 file changed, 7 insertions(+), 6 deletions(-)
src/plugins/acl/acl-backend-vfile.c | 13 +++++++------
diffs (43 lines):
diff -r 021b6900a900 -r 0008fb28e62b src/plugins/acl/acl-backend-vfile.c
--- 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 @@ acl_backend_vfile_read(struct acl_object
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 @@ acl_backend_vfile_read(struct acl_object
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;
More information about the dovecot-cvs
mailing list