peer_delete has been written to handle the peer->group pointer and to remove the peer from the peer group if it exists upon deletion being called. Shutdown/deletion Code was intentionally setting the peer-group to NULL prior to calling peer_delete. This leaked the memory associated with the peer->group because of refcnt accounting.
Signed-off-by: Donald Sharp <[email protected]> --- bgpd/bgpd.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index 20a2123..f3bde02 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -1696,7 +1696,6 @@ peer_group_delete (struct peer_group *group) for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer)) { - peer->group = NULL; peer_delete (peer); } list_delete (group->peer); @@ -1726,7 +1725,6 @@ peer_group_remote_as_delete (struct peer_group *group) for (ALL_LIST_ELEMENTS (group->peer, node, nnode, peer)) { - peer->group = NULL; peer_delete (peer); } list_delete_all_node (group->peer); -- 1.7.10.4 _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
