Index: main/taskprocessor.c =================================================================== --- main/taskprocessor.c (revision 375831) +++ main/taskprocessor.c (working copy) @@ -122,6 +122,13 @@ AST_CLI_DEFINE(cli_tps_report, "List instantiated task processors and statistics"), }; +/*! \internal \brief Clean up resources on Asterisk shutdown */ +static void tps_shutdown(void) +{ + ast_cli_unregister_multiple(taskprocessor_clis, ARRAY_LEN(taskprocessor_clis)); + ao2_t_ref(tps_singletons, -1, "Unref tps_singletons in shutdown"); +} + /* initialize the taskprocessor container and register CLI operations */ int ast_tps_init(void) { @@ -133,6 +140,9 @@ ast_cond_init(&cli_ping_cond, NULL); ast_cli_register_multiple(taskprocessor_clis, ARRAY_LEN(taskprocessor_clis)); + + ast_register_atexit(tps_shutdown); + return 0; }