diff options
author | paulo <paul@bayleaf.org.uk> | 2010-01-20 13:09:35 +0000 |
---|---|---|
committer | paulo <paul@bayleaf.org.uk> | 2010-01-20 13:09:35 +0000 |
commit | 13fad04d09978db15317d3d3fb71ab87ea52c110 (patch) | |
tree | dca03d21ec9517db4ee837873e6d54736ea20286 /bgpd/bgp_fsm.c | |
parent | 5b8978176cbefe7c38f3ed72fd863e2e313d86d8 (diff) | |
download | quagga-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.c | 5 |
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. */ |