diff options
-rw-r--r-- | main/asterisk.c | 20 |
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); |