From: Richard Mudgett Date: Tue, 11 Dec 2012 21:57:44 +0000 (+0000) Subject: Cleanup CLI commands on exit for several files. X-Git-Tag: 10.12.0-rc2~3^2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=647423d857877d45109f033d6d4a70e3114b57ff;p=thirdparty%2Fasterisk.git Cleanup CLI commands on exit for several files. (issue ASTERISK-20649) Reported by: Corey Farrell Patches: unregister-cli-multiple-all.patch (license #5909) patch uploaded by Corey Farrell ........ Merged revisions 377881 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@377882 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/aoc.c b/main/aoc.c index 817bb9225f..dcc00725b4 100644 --- a/main/aoc.c +++ b/main/aoc.c @@ -1605,7 +1605,12 @@ static struct ast_cli_entry aoc_cli[] = { AST_CLI_DEFINE(aoc_cli_debug_enable, "enable cli debugging of AOC messages"), }; +static void aoc_shutdown(void) +{ + ast_cli_unregister_multiple(aoc_cli, ARRAY_LEN(aoc_cli)); +} int ast_aoc_cli_init(void) { + ast_register_atexit(aoc_shutdown); return ast_cli_register_multiple(aoc_cli, ARRAY_LEN(aoc_cli)); } diff --git a/main/cel.c b/main/cel.c index 117c5de4a3..02b37dc11d 100644 --- a/main/cel.c +++ b/main/cel.c @@ -715,6 +715,7 @@ static void ast_cel_engine_term(void) ao2_ref(linkedids, -1); linkedids = NULL; } + ast_cli_unregister(&cli_status); } int ast_cel_engine_init(void) diff --git a/main/channel.c b/main/channel.c index d419f88b48..82253d0ac2 100644 --- a/main/channel.c +++ b/main/channel.c @@ -8329,6 +8329,7 @@ static const struct ast_data_entry channel_providers[] = { static void channels_shutdown(void) { ast_data_unregister(NULL); + ast_cli_unregister_multiple(cli_channel, ARRAY_LEN(cli_channel)); if (channels) { ao2_ref(channels, -1); channels = NULL; diff --git a/main/data.c b/main/data.c index 9205d8a929..3d77b573c0 100644 --- a/main/data.c +++ b/main/data.c @@ -3318,7 +3318,9 @@ AST_TEST_DEFINE(test_data_get) static void data_shutdown(void) { ast_manager_unregister("DataGet"); + ast_cli_unregister_multiple(cli_data, ARRAY_LEN(cli_data)); ao2_t_ref(root_data.container, -1, "Unref root_data.container in data_shutdown"); + root_data.container = NULL; ast_rwlock_destroy(&root_data.lock); } diff --git a/main/file.c b/main/file.c index 3455c3af09..7556d3d698 100644 --- a/main/file.c +++ b/main/file.c @@ -1555,8 +1555,14 @@ static struct ast_cli_entry cli_file[] = { AST_CLI_DEFINE(handle_cli_core_show_file_formats, "Displays file formats") }; +static void file_shutdown(void) +{ + ast_cli_unregister_multiple(cli_file, ARRAY_LEN(cli_file)); +} + int ast_file_init(void) { ast_cli_register_multiple(cli_file, ARRAY_LEN(cli_file)); + ast_register_atexit(file_shutdown); return 0; } diff --git a/main/http.c b/main/http.c index 55ade21d79..20bc515c3a 100644 --- a/main/http.c +++ b/main/http.c @@ -1195,11 +1195,17 @@ static struct ast_cli_entry cli_http[] = { AST_CLI_DEFINE(handle_show_http, "Display HTTP server status"), }; +static void http_shutdown(void) +{ + ast_cli_unregister_multiple(cli_http, ARRAY_LEN(cli_http)); +} + int ast_http_init(void) { ast_http_uri_link(&statusuri); ast_http_uri_link(&staticuri); ast_cli_register_multiple(cli_http, ARRAY_LEN(cli_http)); + ast_register_atexit(http_shutdown); return __ast_http_load(0); } diff --git a/main/image.c b/main/image.c index e9b4758d9c..24316e21f8 100644 --- a/main/image.c +++ b/main/image.c @@ -206,8 +206,14 @@ static struct ast_cli_entry cli_image[] = { AST_CLI_DEFINE(handle_core_show_image_formats, "Displays image formats") }; +static void image_shutdown(void) +{ + ast_cli_unregister_multiple(cli_image, ARRAY_LEN(cli_image)); +} + int ast_image_init(void) { ast_cli_register_multiple(cli_image, ARRAY_LEN(cli_image)); + ast_register_atexit(image_shutdown); return 0; } diff --git a/main/stun.c b/main/stun.c index ca3183839a..7203f270c6 100644 --- a/main/stun.c +++ b/main/stun.c @@ -499,8 +499,14 @@ static struct ast_cli_entry cli_stun[] = { AST_CLI_DEFINE(handle_cli_stun_set_debug, "Enable/Disable STUN debugging"), }; +static void stun_shutdown(void) +{ + ast_cli_unregister_multiple(cli_stun, sizeof(cli_stun) / sizeof(struct ast_cli_entry)); +} + /*! \brief Initialize the STUN system in Asterisk */ void ast_stun_init(void) { ast_cli_register_multiple(cli_stun, sizeof(cli_stun) / sizeof(struct ast_cli_entry)); + ast_register_atexit(stun_shutdown); } diff --git a/main/timing.c b/main/timing.c index 05a52214c1..e5bb7d6728 100644 --- a/main/timing.c +++ b/main/timing.c @@ -299,11 +299,21 @@ static struct ast_cli_entry cli_timing[] = { AST_CLI_DEFINE(timing_test, "Run a timing test"), }; +static void timing_shutdown(void) +{ + ast_cli_unregister_multiple(cli_timing, ARRAY_LEN(cli_timing)); + + ast_heap_destroy(timing_interfaces); + timing_interfaces = NULL; +} + int ast_timing_init(void) { if (!(timing_interfaces = ast_heap_create(2, timing_holder_cmp, 0))) { return -1; } + ast_register_atexit(timing_shutdown); + return ast_cli_register_multiple(cli_timing, ARRAY_LEN(cli_timing)); }