]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
*-login: If connecting to anvil fails with EAGAIN, try again a few times.
authorTimo Sirainen <tss@iki.fi>
Fri, 4 Sep 2009 21:06:31 +0000 (17:06 -0400)
committerTimo Sirainen <tss@iki.fi>
Fri, 4 Sep 2009 21:06:31 +0000 (17:06 -0400)
--HG--
branch : HEAD

src/login-common/main.c

index a0b65bf6c85da7de2c83d45aaeb044a81261e6ae..d27fdbfec96bd3eb89ba154ed426e5148cc7725d 100644 (file)
@@ -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)