From 25e76def21829edef7ef9bca0a028cccfabb944a Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 10 Aug 2016 14:41:49 +0200 Subject: lib, irmd, ipcp: Add socket timeout This will add a timeout to the socket so that a process won't be blocked by the actions of the process with which it is communicating over the socket. --- src/lib/ipcp.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/lib/ipcp.c') diff --git a/src/lib/ipcp.c b/src/lib/ipcp.c index 9ff05e7b..bdc980f9 100644 --- a/src/lib/ipcp.c +++ b/src/lib/ipcp.c @@ -37,6 +37,8 @@ #include #include #include +#include +#include static void close_ptr(void * o) { @@ -51,6 +53,8 @@ static ipcp_msg_t * send_recv_ipcp_msg(pid_t api, char * sock_path = NULL; ssize_t count = 0; ipcp_msg_t * recv_msg = NULL; + struct timeval tv = {(SOCKET_TIMEOUT / 1000), + (SOCKET_TIMEOUT % 1000) * 1000}; sock_path = ipcp_sock_path(api); if (sock_path == NULL) @@ -62,6 +66,10 @@ static ipcp_msg_t * send_recv_ipcp_msg(pid_t api, return NULL; } + if (setsockopt(sockfd, SOL_SOCKET, SO_RCVTIMEO, + (void *) &tv, sizeof(tv))) + LOG_WARN("Failed to set timeout on socket."); + free(sock_path); buf.len = ipcp_msg__get_packed_size(msg); -- cgit v1.2.3