summaryrefslogtreecommitdiff
path: root/main/ccss.c
diff options
context:
space:
mode:
authorMatthew Jordan <mjordan@digium.com>2012-10-03 17:27:53 +0000
committerMatthew Jordan <mjordan@digium.com>2012-10-03 17:27:53 +0000
commit9367893cff8b69dd070adcce06ca9b5a998188cc (patch)
tree852cfc530007c4a926a48452086b15cd7f0ea023 /main/ccss.c
parent9b25076e837559d70203a011f886bc0d1fff2185 (diff)
Destroy the generic_monitors container after the core_instances in ccss
For each item in core_instances disposed of in the shutdown of ccss, any generic monitor instances referenced by the objects will be removed from generic_monitors during their destruction. Hilarity ensues if generic_monitors no longer exists. Thanks to the Asterisk Test Suite's generic_ccss test for complaining loudly when it ran into this. ........ Merged revisions 374300 from http://svn.asterisk.org/svn/asterisk/branches/10 ........ Merged revisions 374301 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@374302 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/ccss.c')
-rw-r--r--main/ccss.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/main/ccss.c b/main/ccss.c
index a45ed2844..5dd1d70bf 100644
--- a/main/ccss.c
+++ b/main/ccss.c
@@ -4535,14 +4535,15 @@ static void cc_shutdown(void)
if (cc_core_taskprocessor) {
cc_core_taskprocessor = ast_taskprocessor_unreference(cc_core_taskprocessor);
}
- if (generic_monitors) {
- ao2_t_ref(generic_monitors, -1, "Unref generic_monitor container in cc_shutdown");
- generic_monitors = NULL;
- }
+ /* Note that core instances must be destroyed prior to the generic_monitors */
if (cc_core_instances) {
ao2_t_ref(cc_core_instances, -1, "Unref cc_core_instances container in cc_shutdown");
cc_core_instances = NULL;
}
+ if (generic_monitors) {
+ ao2_t_ref(generic_monitors, -1, "Unref generic_monitor container in cc_shutdown");
+ generic_monitors = NULL;
+ }
}
int ast_cc_init(void)