]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Destroy the generic_monitors container after the core_instances in ccss
authorMatthew Jordan <mjordan@digium.com>
Wed, 3 Oct 2012 17:25:36 +0000 (17:25 +0000)
committerMatthew Jordan <mjordan@digium.com>
Wed, 3 Oct 2012 17:25:36 +0000 (17:25 +0000)
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.

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@374300 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/ccss.c

index e1323e7098dbe43be3e5963da1834d54b9778fec..5e8639d6d1c18ea27af39f2c7069b4abf899df7e 100644 (file)
@@ -4499,14 +4499,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)