X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fcommon%2Fsessiond-comm%2Finet.c;h=2703a666e71e557c10b956bb2c0402d89ca1aec9;hp=2c959c5fe81ee08d21cca8f0ac42a62d0dfecb6c;hb=6c1c0768320135c6936c371b09731851b508c023;hpb=6cd525e813795a1d5e38feac8dedf2c73ffb1274 diff --git a/src/common/sessiond-comm/inet.c b/src/common/sessiond-comm/inet.c index 2c959c5fe..2703a666e 100644 --- a/src/common/sessiond-comm/inet.c +++ b/src/common/sessiond-comm/inet.c @@ -16,6 +16,7 @@ */ #define _GNU_SOURCE +#define _LGPL_SOURCE #include #include #include @@ -275,6 +276,7 @@ struct lttcomm_sock *lttcomm_accept_inet_sock(struct lttcomm_sock *sock) int new_fd; socklen_t len; struct lttcomm_sock *new_sock; + unsigned long timeout; if (sock->proto == LTTCOMM_SOCK_UDP) { /* @@ -298,6 +300,19 @@ struct lttcomm_sock *lttcomm_accept_inet_sock(struct lttcomm_sock *sock) PERROR("accept inet"); goto error; } + timeout = lttcomm_get_network_timeout(); + if (timeout) { + int ret; + + ret = lttcomm_setsockopt_rcv_timeout(new_fd, timeout); + if (ret) { + goto error_close; + } + ret = lttcomm_setsockopt_snd_timeout(new_fd, timeout); + if (ret) { + goto error_close; + } + } new_sock->fd = new_fd; new_sock->ops = &inet_ops; @@ -305,6 +320,11 @@ struct lttcomm_sock *lttcomm_accept_inet_sock(struct lttcomm_sock *sock) end: return new_sock; +error_close: + if (close(new_fd) < 0) { + PERROR("accept inet close fd"); + } + error: free(new_sock); return NULL;