diff options
author | Dimitri Staessens <dimitri@ouroboros.rocks> | 2021-12-22 12:02:31 +0100 |
---|---|---|
committer | Sander Vrijders <sander@ouroboros.rocks> | 2021-12-22 16:34:56 +0100 |
commit | e3970d0a46ede685aaf275a08175d79c830676c6 (patch) | |
tree | e236e98931946c2874d3a1dec3a7e115d3722757 | |
parent | e95fcce0c4e3901347c51016f01128a3c87f75b8 (diff) | |
download | ouroboros-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.h | 3 | ||||
-rw-r--r-- | 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); |