Mercurial > dovecot > core-2.2
changeset 9875:199857627883 HEAD
*-login: If connecting to anvil fails with EAGAIN, try again a few times.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 04 Sep 2009 17:06:31 -0400 |
parents | 831adf94c39f |
children | 31a283729295 |
files | src/login-common/main.c |
diffstat | 1 files changed, 6 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/login-common/main.c Fri Sep 04 17:05:21 2009 -0400 +++ b/src/login-common/main.c Fri Sep 04 17:06:31 2009 -0400 @@ -76,11 +76,13 @@ static int anvil_connect(void) { #define ANVIL_HANDSHAKE "VERSION\tanvil\t1\t0\n" - int fd; + int i = 0, fd; - fd = net_connect_unix("anvil"); - if (fd < 0) - i_fatal("net_connect_unix(anvil) failed: %m"); + while ((fd = net_connect_unix("anvil")) == -1) { + if (errno != EAGAIN || ++i == 3) + i_fatal("net_connect_unix(anvil) failed: %m"); + sleep(1); + } net_set_nonblock(fd, FALSE); if (write(fd, ANVIL_HANDSHAKE, strlen(ANVIL_HANDSHAKE)) < 0)