From 521f5f0889bf7b56ade00395e0cfc0d4727dada5 Mon Sep 17 00:00:00 2001 From: Sander Vrijders Date: Wed, 30 Aug 2017 13:28:25 +0200 Subject: irmd: Add specific timeout for IPCP connect This adds a specific timeout for IPCP connect, since it may take a lot longer than the regular socket timeout due to flow allocations in the IPCP. --- src/irmd/CMakeLists.txt | 2 ++ src/irmd/config.h.in | 1 + src/irmd/ipcp.c | 4 ++++ 3 files changed, 7 insertions(+) diff --git a/src/irmd/CMakeLists.txt b/src/irmd/CMakeLists.txt index 3339991a..de883d63 100644 --- a/src/irmd/CMakeLists.txt +++ b/src/irmd/CMakeLists.txt @@ -18,6 +18,8 @@ set(REG_TIMEOUT 10000 CACHE STRING "Timeout for registering a name (ms)") set(QUERY_TIMEOUT 3000 CACHE STRING "Timeout to query a name with an IPCP (ms)") +set(CONNECT_TIMEOUT 5000 CACHE STRING + "Timeout to connect an IPCP to another IPCP (ms)") set(IRMD_MIN_THREADS 8 CACHE STRING "Minimum number of worker threads in the IRMd.") set(IRMD_ADD_THREADS 8 CACHE STRING diff --git a/src/irmd/config.h.in b/src/irmd/config.h.in index eb396bbc..c217fe93 100644 --- a/src/irmd/config.h.in +++ b/src/irmd/config.h.in @@ -39,6 +39,7 @@ #define ENROLL_TIMEOUT @ENROLL_TIMEOUT@ #define REG_TIMEOUT @REG_TIMEOUT@ #define QUERY_TIMEOUT @QUERY_TIMEOUT@ +#define CONNECT_TIMEOUT @CONNECT_TIMEOUT@ #define SYS_MAX_FLOWS @SYS_MAX_FLOWS@ diff --git a/src/irmd/ipcp.c b/src/irmd/ipcp.c index 794d060e..497bff9f 100644 --- a/src/irmd/ipcp.c +++ b/src/irmd/ipcp.c @@ -96,6 +96,10 @@ ipcp_msg_t * send_recv_ipcp_msg(pid_t api, tv.tv_sec = QUERY_TIMEOUT / 1000; tv.tv_usec = (QUERY_TIMEOUT % 1000) * 1000; break; + case IPCP_MSG_CODE__IPCP_CONNECT: + tv.tv_sec = CONNECT_TIMEOUT / 1000; + tv.tv_usec = (CONNECT_TIMEOUT % 1000) * 1000; + break; default: tv.tv_sec = SOCKET_TIMEOUT / 1000; tv.tv_usec = (SOCKET_TIMEOUT % 1000) * 1000; -- cgit v1.2.3