]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: Fix holdtime not working properly when busy 18489/head
authorDonald Sharp <sharpd@nvidia.com>
Mon, 24 Mar 2025 18:28:38 +0000 (14:28 -0400)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Tue, 25 Mar 2025 07:49:15 +0000 (09:49 +0200)
Commit:  cc9f21da2218d95567eff1501482ce58e6600f54

Modified the bgp_fsm code to dissallow the extension
of the hold time when the system is under extremely
heavy load.  This was a attempt to remove the return
code but it was too aggressive and messed up this bit
of code.

Put the behavior back that was introduced in:
d0874d195d0127009a7d9c06920c52c95319eff9

Signed-off-by: Donald Sharp <sharpd@nvidia.com>
bgpd/bgp_fsm.c

index f5b0e4878406747200ccbf103a6163aa34d930b5..d2c45ca75cd82766e02b1ca121b450a217aeab6e 100644 (file)
@@ -524,9 +524,11 @@ static void bgp_holdtime_timer(struct event *thread)
         */
        inq_count = atomic_load_explicit(&connection->ibuf->count,
                                         memory_order_relaxed);
-       if (inq_count)
+       if (inq_count) {
                BGP_TIMER_ON(connection->t_holdtime, bgp_holdtime_timer,
                             peer->v_holdtime);
+               return;
+       }
 
        EVENT_VAL(thread) = Hold_Timer_expired;
        bgp_event(thread); /* bgp_event unlocks peer */