summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/asterisk.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/main/asterisk.c b/main/asterisk.c
index 03c9962b3..78a481d7c 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -1869,11 +1869,10 @@ static void really_quit(int num, shutdown_nice_t niceness, int restart)
}
}
}
- ast_verb(0, "Executing last minute cleanups\n");
- ast_run_atexits();
- /* Called on exit */
- ast_verb(0, "Asterisk %s ending (%d).\n", ast_active_channels() ? "uncleanly" : "cleanly", num);
- ast_debug(1, "Asterisk ending (%d).\n", num);
+ /* 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.
+ */
/*** DOCUMENTATION
<managerEventInstance>
<synopsis>Raised when Asterisk is shutdown or restarted.</synopsis>
@@ -1893,7 +1892,16 @@ static void really_quit(int num, shutdown_nice_t niceness, int restart)
</syntax>
</managerEventInstance>
***/
- manager_event(EVENT_FLAG_SYSTEM, "Shutdown", "Shutdown: %s\r\nRestart: %s\r\n", ast_active_channels() ? "Uncleanly" : "Cleanly", restart ? "True" : "False");
+ manager_event(EVENT_FLAG_SYSTEM, "Shutdown", "Shutdown: %s\r\n"
+ "Restart: %s\r\n",
+ ast_active_channels() ? "Uncleanly" : "Cleanly",
+ restart ? "True" : "False");
+
+ ast_verb(0, "Executing last minute cleanups\n");
+ ast_run_atexits();
+ /* Called on exit */
+ ast_verb(0, "Asterisk %s ending (%d).\n", ast_active_channels() ? "uncleanly" : "cleanly", num);
+ ast_debug(1, "Asterisk ending (%d).\n", num);
if (ast_socket > -1) {
pthread_cancel(lthread);
close(ast_socket);