]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Cleanup CLI commands on exit for several files.
authorRichard Mudgett <rmudgett@digium.com>
Tue, 11 Dec 2012 21:57:44 +0000 (21:57 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 11 Dec 2012 21:57:44 +0000 (21:57 +0000)
(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

main/aoc.c
main/cel.c
main/channel.c
main/data.c
main/file.c
main/http.c
main/image.c
main/stun.c
main/timing.c

index 817bb9225fbf756a586119240bd743f452cc9b7d..dcc00725b43cb0ecc69a83e405976afaa10cd551 100644 (file)
@@ -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));
 }
index 117c5de4a3f5041c04fc6cf7154b40b7735449a3..02b37dc11d743c9c23933d1dd2a8a5dc40cde2a4 100644 (file)
@@ -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)
index d419f88b483d8c73ba271f7938290589772a4393..82253d0ac2fde809825c05a38ca366b0805d0437 100644 (file)
@@ -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;
index 9205d8a9292a291d48276b7f1c46558d4fa5877c..3d77b573c0c78b98517032e60f76396ef359fe46 100644 (file)
@@ -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);
 }
 
index 3455c3af092ed128e3de79f77cd28817f629f967..7556d3d6988f0e4a4e735f41303f5f36f5816441 100644 (file)
@@ -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;
 }
index 55ade21d790e7caec5f38746b1e66b219d279463..20bc515c3a8a2eb0070c79d954a3e4e270605385 100644 (file)
@@ -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);
 }
index e9b4758d9c92fd28a9e846535670900f708d6dc7..24316e21f813243ac5053e217b4aca8bfb81c77b 100644 (file)
@@ -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;
 }
index ca3183839af067077af478fb73b802f6e00507e1..7203f270c666ee4c2d8edf2d45516c829675a921 100644 (file)
@@ -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);
 }
index 05a52214c115c632a2ab482551a935efa82854b9..e5bb7d6728ad30f49f39eaf41e85d88e282915b6 100644 (file)
@@ -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));
 }