changeset 10573:823356f533c5 HEAD

lib-master: Try for 0.5 secs to connect to master-auth socket.
author Timo Sirainen <tss@iki.fi>
date Sat, 23 Jan 2010 12:40:22 +0200
parents 26b5209dc4f4
children 354d3b1eee03
files src/lib-master/master-auth.c
diffstat 1 files changed, 9 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-master/master-auth.c	Sat Jan 23 12:37:35 2010 +0200
+++ b/src/lib-master/master-auth.c	Sat Jan 23 12:40:22 2010 +0200
@@ -12,6 +12,8 @@
 #include <unistd.h>
 #include <sys/stat.h>
 
+#define SOCKET_CONNECT_RETRY_MSECS 500
+
 struct master_auth_connection {
 	struct master_auth *auth;
 	unsigned int tag;
@@ -172,12 +174,15 @@
 	buffer_append(buf, &req, sizeof(req));
 	buffer_append(buf, data, req.data_size);
 
-	conn->fd = net_connect_unix(auth->path);
-	if (conn->fd == -1)
+	conn->fd = net_connect_unix_with_retries(auth->path,
+						 SOCKET_CONNECT_RETRY_MSECS);
+	if (conn->fd == -1) {
 		i_error("net_connect_unix(%s) failed: %m", auth->path);
+		master_auth_connection_deinit(&conn);
+		return;
+	}
 
-	ret = conn->fd == -1 ? -1 :
-		fd_send(conn->fd, fd, buf->data, buf->used);
+	ret = fd_send(conn->fd, fd, buf->data, buf->used);
 	if (ret < 0)
 		i_error("fd_send(%d) failed: %m", fd);
 	else if ((size_t)ret != buf->used) {