[bgpd] Bug #533: Fix crash with copy/pasted commands, inc 'no bgp ...'
commitfd35b948dbb35674cd9ded431f94b59aeced40cc
authorPaul Jakma <paul@quagga.net>
Thu, 16 Jul 2009 18:27:32 +0000 (16 19:27 +0100)
committerPaul Jakma <paul@quagga.net>
Fri, 17 Jul 2009 10:19:46 +0000 (17 11:19 +0100)
treec236a99b492b19943916e0c117b0a2461333b422
parent3fa3f957e70f594cc2c1cac03644ddf48554c178
[bgpd] Bug #533: Fix crash with copy/pasted commands, inc 'no bgp ...'

* bgpd.c: Removal of (struct bgp *) from the master list was being left to
  bgp_free time.  This meant there was a window of time between bgp_delete
  and refcounts hitting 0 (e.g.  routes to be processed) where bgp_lookup's
  could return a deleted (struct bgp *).

  (bgp_delete) This is the logical place where a (struct bgp *) should lose
  its visibility, so move the deletion from the bgp-master list to here,
  from bgp_free.

  Many thanks to Fritz Reichmann for his thorough debugging of the problem
  and testing of fixes and Chris Caputo for his further analysis.
bgpd/bgpd.c