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)