dovecot-1.1: If log write() fails because of EINTR, try again 2 ...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Mar 18 19:48:50 EET 2009
details: http://hg.dovecot.org/dovecot-1.1/rev/12230cb6931b
changeset: 8206:12230cb6931b
user: Timo Sirainen <tss at iki.fi>
date: Wed Mar 18 13:47:58 2009 -0400
description:
If log write() fails because of EINTR, try again 2 more times.
diffstat:
1 file changed, 6 insertions(+)
src/lib/failures.c | 6 ++++++
diffs (23 lines):
diff -r c6c50a99141f -r 12230cb6931b src/lib/failures.c
--- a/src/lib/failures.c Sun Mar 15 20:06:45 2009 -0400
+++ b/src/lib/failures.c Wed Mar 18 13:47:58 2009 -0400
@@ -82,6 +82,7 @@ static int log_fd_write(int fd, const un
struct ioloop *ioloop;
struct io *io;
ssize_t ret;
+ unsigned int eintr_count = 0;
while ((ret = write(fd, data, len)) != (ssize_t)len) {
if (ret > 0) {
@@ -94,6 +95,11 @@ static int log_fd_write(int fd, const un
/* out of disk space? */
errno = ENOSPC;
return -1;
+ }
+ if (errno == EINTR && ++eintr_count < 3) {
+ /* we don't want to die because of this.
+ try again a couple of times. */
+ continue;
}
if (errno != EAGAIN)
return -1;
More information about the dovecot-cvs
mailing list