summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Staessens <dimitri@ouroboros.rocks>2021-12-22 12:02:31 +0100
committerSander Vrijders <sander@ouroboros.rocks>2021-12-22 16:34:56 +0100
commite3970d0a46ede685aaf275a08175d79c830676c6 (patch)
treee236e98931946c2874d3a1dec3a7e115d3722757
parente95fcce0c4e3901347c51016f01128a3c87f75b8 (diff)
downloadouroboros-e3970d0a46ede685aaf275a08175d79c830676c6.tar.gz
ouroboros-e3970d0a46ede685aaf275a08175d79c830676c6.zip
ipcpd: Fix waiting for FRCP to time out
The timeout variable was not correctly passed to the IPCP, causing flow IDs to be reused immediately instead of waiting for the full Delta-t to expire. This caused all kinds of havoc with retransmissions in reliable flows. Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks> Signed-off-by: Sander Vrijders <sander@ouroboros.rocks>
-rw-r--r--include/ouroboros/np1_flow.h3
-rw-r--r--src/ipcpd/ipcp.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/include/ouroboros/np1_flow.h b/include/ouroboros/np1_flow.h
index c82257d..b764de9 100644
--- a/include/ouroboros/np1_flow.h
+++ b/include/ouroboros/np1_flow.h
@@ -33,6 +33,7 @@ int np1_flow_alloc(pid_t n_pid,
int np1_flow_resp(int flow_id);
-int np1_flow_dealloc(int flow_id);
+int np1_flow_dealloc(int flow_id,
+ time_t timeo);
#endif /* OUROBOROS_NP1_FLOW_H */
diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c
index ff16065..cd09a7c 100644
--- a/src/ipcpd/ipcp.c
+++ b/src/ipcpd/ipcp.c
@@ -617,7 +617,7 @@ static void * mainloop(void * o)
break;
}
- fd = np1_flow_dealloc(msg->flow_id);
+ fd = np1_flow_dealloc(msg->flow_id, msg->timeo_sec);
if (fd < 0) {
log_warn("Could not deallocate flow_id %d.",
msg->flow_id);