dovecot-1.2: If log write() fails because of EINTR, try again 2 ...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Mar 18 19:48:38 EET 2009
details: http://hg.dovecot.org/dovecot-1.2/rev/299e30db1ee9
changeset: 8835:299e30db1ee9
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 5284f45c249a -r 299e30db1ee9 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