From 6a4677b723b6f79997ca15ee202c36d528d3dfcf Mon Sep 17 00:00:00 2001 From: "Jorge Boncompte [DTI2]" Date: Mon, 7 May 2012 16:53:07 +0000 Subject: bgpd: optimize holdtime timer cancelling * bgp_packet.c: (bgp_update_receive) for every update received we queue an event just to cancel the holdtime timer, done in bgp_fsm_update(). Instead cancel the timer directly an avoid a scheduling pass. This incidently fixes another problem found on a slow box, where thousands of events threads were queued, and run, but never freed, because they are moved to the unused list that grows without bounds. Signed-off-by: Jorge Boncompte [DTI2] Signed-off-by: David Lamparter --- bgpd/bgp_packet.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bgpd/bgp_packet.c b/bgpd/bgp_packet.c index cfa0b57c..024f5e7b 100644 --- a/bgpd/bgp_packet.c +++ b/bgpd/bgp_packet.c @@ -1854,8 +1854,8 @@ bgp_update_receive (struct peer *peer, bgp_size_t size) peer->update_in++; peer->update_time = bgp_clock (); - /* Generate BGP event. */ - BGP_EVENT_ADD (peer, Receive_UPDATE_message); + /* Cancel holdtime timer */ + BGP_TIMER_OFF (peer->t_holdtime); return 0; } -- cgit v1.2.1