From e3970d0a46ede685aaf275a08175d79c830676c6 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Wed, 22 Dec 2021 12:02:31 +0100 Subject: 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 Signed-off-by: Sander Vrijders --- include/ouroboros/np1_flow.h | 3 ++- src/ipcpd/ipcp.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/ouroboros/np1_flow.h b/include/ouroboros/np1_flow.h index c82257de..b764de91 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 ff160652..cd09a7cf 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); -- cgit v1.2.3