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

Make sure we're not stuck forever by setting a timeout on the socket.
This commit is contained in:
Olivier Houchard 2017-04-06 14:45:14 +02:00 committed by Willy Tarreau
parent 1fc0516516
commit 547408787f
2 changed files with 4 additions and 0 deletions

View File

@ -1025,6 +1025,7 @@ static int _getsocks(char **args, struct appctx *appctx, void *private)
struct connection *remote = objt_conn(si_opposite(si)->end); struct connection *remote = objt_conn(si_opposite(si)->end);
struct msghdr msghdr; struct msghdr msghdr;
struct iovec iov; struct iovec iov;
struct timeval tv = { .tv_sec = 1, .tv_usec = 0 };
int *tmpfd; int *tmpfd;
int tot_fd_nb = 0; int tot_fd_nb = 0;
struct proxy *px; struct proxy *px;
@ -1049,6 +1050,7 @@ static int _getsocks(char **args, struct appctx *appctx, void *private)
Warning("Cannot make the unix socket blocking\n"); Warning("Cannot make the unix socket blocking\n");
goto out; goto out;
} }
setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, (void *)&tv, sizeof(tv));
iov.iov_base = &tot_fd_nb; iov.iov_base = &tot_fd_nb;
iov.iov_len = sizeof(tot_fd_nb); iov.iov_len = sizeof(tot_fd_nb);
if (!cli_has_level(appctx, ACCESS_LVL_ADMIN)) if (!cli_has_level(appctx, ACCESS_LVL_ADMIN))

View File

@ -574,6 +574,7 @@ static int get_old_sockets(const char *unixsocket)
struct msghdr msghdr; struct msghdr msghdr;
struct iovec iov; struct iovec iov;
struct xfer_sock_list *xfer_sock = NULL; struct xfer_sock_list *xfer_sock = NULL;
struct timeval tv = { .tv_sec = 1, .tv_usec = 0 };
int sock = -1; int sock = -1;
int ret = -1; int ret = -1;
int ret2 = -1; int ret2 = -1;
@ -603,6 +604,7 @@ static int get_old_sockets(const char *unixsocket)
unixsocket); unixsocket);
goto out; goto out;
} }
setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, (void *)&tv, sizeof(tv));
iov.iov_base = &fd_nb; iov.iov_base = &fd_nb;
iov.iov_len = sizeof(fd_nb); iov.iov_len = sizeof(fd_nb);
msghdr.msg_iov = &iov; msghdr.msg_iov = &iov;