summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpaul <paul>2005-06-15 19:15:35 +0000
committerpaul <paul>2005-06-15 19:15:35 +0000
commit1752d85e567d0efd943208d554a47ee36e64a8d1 (patch)
treecea821c016b1995757a14ec95ea1c5a64b82d289
parent58f24a0270c6a3a390627ba2fda2d1c0a261ad7a (diff)
downloadquagga-1752d85e567d0efd943208d554a47ee36e64a8d1.tar.bz2
quagga-1752d85e567d0efd943208d554a47ee36e64a8d1.tar.xz
2005-06-15 Paul Jakma <paul.jakma@sun.com>
* bgpd.c: (bgp_terminate) workqueue's are lazy allocated and its possible to terminate bgpd before workqueues were setup, causing an abort/crash. Reported by Ashish Mehta of Sun.
-rw-r--r--bgpd/ChangeLog6
-rw-r--r--bgpd/bgpd.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 254d5aff..6bd444d5 100644
--- a/bgpd/ChangeLog
+++ b/bgpd/ChangeLog
@@ -1,3 +1,9 @@
+2005-06-15 Paul Jakma <paul.jakma@sun.com>
+
+ * bgpd.c: (bgp_terminate) workqueue's are lazy allocated and its
+ possible to terminate bgpd before workqueues were setup, causing
+ an abort/crash. Reported by Ashish Mehta of Sun.
+
2005-06-01 Paul Jakma <paul.jakma@sun.com>
* (general) refcount struct peer and bgp_info, hence allowing us
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 83cf9a8d..9473d6f8 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -4977,7 +4977,9 @@ bgp_terminate ()
BGP_NOTIFY_CEASE_PEER_UNCONFIG);
bgp_cleanup_routes ();
- work_queue_free (bm->process_main_queue);
- work_queue_free (bm->process_rsclient_queue);
+ if (bm->process_main_queue)
+ work_queue_free (bm->process_main_queue);
+ if (bm->process_rsclient_queue)
+ work_queue_free (bm->process_rsclient_queue);
}