[PATCH 2/2] lib: Fix flow dealloc after expired FRCT timeout

  • From: Dimitri Staessens <dimitri@ouroboros.rocks>
  • To: ouroboros@xxxxxxxxxxxxx
  • Date: Mon, 20 Dec 2021 16:55:07 +0100

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


Other related posts:

  • » [PATCH 2/2] lib: Fix flow dealloc after expired FRCT timeout - Dimitri Staessens