summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSander Vrijders <sander.vrijders@ugent.be>2017-08-30 13:28:25 +0200
committerSander Vrijders <sander.vrijders@ugent.be>2017-08-30 13:28:25 +0200
commit521f5f0889bf7b56ade00395e0cfc0d4727dada5 (patch)
treeabb32df5638e435767f723ad044013958db0d5b6
parent8fe0340d2117cf9b5c724ff10621978ef2bee5f1 (diff)
downloadouroboros-521f5f0889bf7b56ade00395e0cfc0d4727dada5.tar.gz
ouroboros-521f5f0889bf7b56ade00395e0cfc0d4727dada5.zip
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.
-rw-r--r--src/irmd/CMakeLists.txt2
-rw-r--r--src/irmd/config.h.in1
-rw-r--r--src/irmd/ipcp.c4
3 files changed, 7 insertions, 0 deletions
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;