From e9a9708b884c1b18025da5bf67c047f70bb4649b Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 4 Sep 2009 17:06:31 -0400 Subject: [PATCH] *-login: If connecting to anvil fails with EAGAIN, try again a few times. --HG-- branch : HEAD --- src/login-common/main.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/login-common/main.c b/src/login-common/main.c index a0b65bf6c8..d27fdbfec9 100644 --- a/src/login-common/main.c +++ b/src/login-common/main.c @@ -76,11 +76,13 @@ static void auth_connect_notify(struct auth_client *client ATTR_UNUSED, 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) -- 2.47.3