summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@nvidia.com>2025-03-24 14:28:38 -0400
committerDonatas Abraitis <donatas@opensourcerouting.org>2025-03-25 09:54:48 +0200
commitbf5b8d768430c690201d77b3194cee6dd42fb0f9 (patch)
treedfa7ac0df446b61b850488c5f5ab440b67047f7e
parent26f939b17def81d6cda9463b67bab352a387c011 (diff)
bgpd: Fix holdtime not working properly when busy
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>
-rw-r--r--bgpd/bgp_fsm.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c
index b07afaf384..79e36fa0a5 100644
--- a/bgpd/bgp_fsm.c
+++ b/bgpd/bgp_fsm.c
@@ -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 */