]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Ensure Shutdown AMI event is still fired during Asterisk shutdown
authorMatthew Jordan <mjordan@digium.com>
Tue, 2 Oct 2012 20:54:16 +0000 (20:54 +0000)
committerMatthew Jordan <mjordan@digium.com>
Tue, 2 Oct 2012 20:54:16 +0000 (20:54 +0000)
Richard pointed out that having the manager dispose of itself gracefully
during shutdown meant that the Shutdown event will no longer get fired.
This patch moves the AMI event just prior to running the atexit callbacks.

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

main/asterisk.c

index 721c1b056d4b29f9173d5bef6ef12c801f630ec5..a92b804f24eadc46d71890766c92b6ed18b7ef85 100644 (file)
@@ -1763,6 +1763,15 @@ static void really_quit(int num, shutdown_nice_t niceness, int restart)
                        }
                }
        }
+       /* The manager event for shutdown must happen prior to ast_run_atexits, as
+        * the manager interface will dispose of its sessions as part of its
+        * shutdown.
+        */
+       manager_event(EVENT_FLAG_SYSTEM, "Shutdown", "Shutdown: %s\r\n"
+                       "Restart: %s\r\n",
+                       ast_active_channels() ? "Uncleanly" : "Cleanly",
+                       restart ? "True" : "False");
+
        if (option_verbose)
                ast_verbose("Executing last minute cleanups\n");
        ast_run_atexits();
@@ -1770,7 +1779,6 @@ static void really_quit(int num, shutdown_nice_t niceness, int restart)
        if (option_verbose && ast_opt_console)
                ast_verbose("Asterisk %s ending (%d).\n", ast_active_channels() ? "uncleanly" : "cleanly", num);
        ast_debug(1, "Asterisk ending (%d).\n", num);
-       manager_event(EVENT_FLAG_SYSTEM, "Shutdown", "Shutdown: %s\r\nRestart: %s\r\n", ast_active_channels() ? "Uncleanly" : "Cleanly", restart ? "True" : "False");
        if (ast_socket > -1) {
                pthread_cancel(lthread);
                close(ast_socket);