If the timeout is already expired, the wait variable would be negative
and return a negative value for the __frcti_dealloc function, thinking
that the timeout was not expired causing an unnecessary wait even if
all packets are acknowledged.
Signed-off-by: Dimitri Staessens <dimitri@ouroboros.rocks>
---
src/lib/frct.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/lib/frct.c b/src/lib/frct.c
index af21ed4d..61a3fde0 100644
--- a/src/lib/frct.c
+++ b/src/lib/frct.c
@@ -631,6 +631,7 @@ static time_t __frcti_dealloc(struct frcti * frcti)
wait = MAX(frcti->rcv_cr.inact - now.tv_sec + frcti->rcv_cr.act.tv_sec,
frcti->snd_cr.inact - now.tv_sec +
frcti->snd_cr.act.tv_sec);
+ wait = MAX(wait, 0);
if (frcti->snd_cr.cflags & FRCTFLINGER
&& before(frcti->snd_cr.lwe, frcti->snd_cr.seqno))
--
2.34.1