Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8835:299e30db1ee9 HEAD
If log write() fails because of EINTR, try again 2 more times.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 18 Mar 2009 13:47:58 -0400 |
parents | 5284f45c249a |
children | dc6880dcbbba |
files | src/lib/failures.c |
diffstat | 1 files changed, 6 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- 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 @@ 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) { @@ -95,6 +96,11 @@ 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;