summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2009-05-08 10:38:02 -0700
committerStephen Hemminger <stephen.hemminger@vyatta.com>2009-05-08 10:38:02 -0700
commit19c0bbbbedfe5b30e43edd7c5b5e5bf8f4947f1b (patch)
treec46f1d97ed96a71142f4b3cb2d57937d85eac59c
parent327d34a6a3dbbb3725a29ff6b04f1759b8799728 (diff)
downloadquagga-19c0bbbbedfe5b30e43edd7c5b5e5bf8f4947f1b.tar.bz2
quagga-19c0bbbbedfe5b30e43edd7c5b5e5bf8f4947f1b.tar.xz
Be safer in bgp_terminate
bgp_terminate is used when process SIGHUP, clear workqueue references after freeing them.
-rw-r--r--bgpd/bgpd.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index bbc2377f..f1d78389 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -5067,9 +5067,13 @@ bgp_terminate (void)
BGP_NOTIFY_CEASE_PEER_UNCONFIG);
bgp_cleanup_routes ();
- if (bm->process_main_queue)
+ if (bm->process_main_queue) {
work_queue_free (bm->process_main_queue);
- if (bm->process_rsclient_queue)
+ bm->process_main_queue = NULL;
+ }
+ if (bm->process_rsclient_queue) {
work_queue_free (bm->process_rsclient_queue);
+ bm->process_rsclient_queue = NULL;
+ }
}