summaryrefslogtreecommitdiffstats
path: root/bgpd/bgp_fsm.c
diff options
context:
space:
mode:
authorpaulo <paul@bayleaf.org.uk>2010-01-20 13:09:35 +0000
committerpaulo <paul@bayleaf.org.uk>2010-01-20 13:09:35 +0000
commit13fad04d09978db15317d3d3fb71ab87ea52c110 (patch)
treedca03d21ec9517db4ee837873e6d54736ea20286 /bgpd/bgp_fsm.c
parent5b8978176cbefe7c38f3ed72fd863e2e313d86d8 (diff)
downloadquagga-13fad04d09978db15317d3d3fb71ab87ea52c110.tar.bz2
quagga-13fad04d09978db15317d3d3fb71ab87ea52c110.tar.xz
Fix bug in bgp_connection not clearing pointers after free. Planted
asserts to try to track timer crash.
Diffstat (limited to 'bgpd/bgp_fsm.c')
-rw-r--r--bgpd/bgp_fsm.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/bgpd/bgp_fsm.c b/bgpd/bgp_fsm.c
index bd1eb600..97c60b1c 100644
--- a/bgpd/bgp_fsm.c
+++ b/bgpd/bgp_fsm.c
@@ -1556,6 +1556,9 @@ bgp_fsm_event(bgp_connection connection, bgp_fsm_event_t event)
do
{
+ assert(bgp_nexus->pile == connection->hold_timer.pile);
+ assert(bgp_nexus->pile == connection->keepalive_timer.pile);
+
assert(connection->fsm_active == 1) ;
fsm = &bgp_fsm[connection->state][event] ;
@@ -1596,6 +1599,8 @@ bgp_fsm_event(bgp_connection connection, bgp_fsm_event_t event)
event = connection->post ;
connection->post = bgp_fsm_null_event ;
+ assert(bgp_nexus->pile == connection->hold_timer.pile);
+ assert(bgp_nexus->pile == connection->keepalive_timer.pile);
} while (--connection->fsm_active != 0) ;
/* If required, post session event. */