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.
diff --git a/bgpd/ChangeLog b/bgpd/ChangeLog
index 254d5af..6bd444d 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 83cf9a8..9473d6f 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -4977,7 +4977,9 @@
                            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);
 }