MINOR: socket transfer: Set a timeout on the socket.

Make sure we're not stuck forever by setting a timeout on the socket.
diff --git a/src/cli.c b/src/cli.c
index 20e143b..55baee3 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -1025,6 +1025,7 @@
 	struct connection *remote = objt_conn(si_opposite(si)->end);
 	struct msghdr msghdr;
 	struct iovec iov;
+	struct timeval tv = { .tv_sec = 1, .tv_usec = 0 };
 	int *tmpfd;
 	int tot_fd_nb = 0;
 	struct proxy *px;
@@ -1049,6 +1050,7 @@
 		Warning("Cannot make the unix socket blocking\n");
 		goto out;
 	}
+	setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (void *)&tv, sizeof(tv));
 	iov.iov_base = &tot_fd_nb;
 	iov.iov_len = sizeof(tot_fd_nb);
 	if (!cli_has_level(appctx, ACCESS_LVL_ADMIN))
diff --git a/src/haproxy.c b/src/haproxy.c
index 01969c9..2b1db00 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -574,6 +574,7 @@
 	struct msghdr msghdr;
 	struct iovec iov;
 	struct xfer_sock_list *xfer_sock = NULL;
+	struct timeval tv = { .tv_sec = 1, .tv_usec = 0 };
 	int sock = -1;
 	int ret = -1;
 	int ret2 = -1;
@@ -603,6 +604,7 @@
 		    unixsocket);
 		goto out;
 	}
+	setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (void *)&tv, sizeof(tv));
 	iov.iov_base = &fd_nb;
 	iov.iov_len = sizeof(fd_nb);
 	msghdr.msg_iov = &iov;