Fix reloads of aliased CLI commands. Due to changes done to turn it into a single...
authorJoshua Colp <jcolp@digium.com>
Wed, 10 Dec 2008 22:48:58 +0000 (22:48 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 10 Dec 2008 22:48:58 +0000 (22:48 +0000)
(closes issue #14054)
Reported by: pj

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@162923 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_clialiases.c

index bb0a083..1ea3024 100644 (file)
@@ -46,7 +46,6 @@ struct cli_alias {
        struct ast_cli_entry cli_entry; /*!< Actual CLI structure used for this alias */
        char *alias;                    /*!< CLI Alias */
        char *real_cmd;                 /*!< Actual CLI command it is aliased to */
-       unsigned int marked:1;          /*!< Bit to indicate whether this CLI alias is marked for destruction or not */
 };
 
 static struct ao2_container *cli_aliases;
@@ -167,19 +166,10 @@ static struct ast_cli_entry cli_alias[] = {
        AST_CLI_DEFINE(alias_show, "Show CLI command aliases"),
 };
 
-/*! \brief Function called to mark an alias for destruction */
-static int alias_mark(void *obj, void *arg, int flags)
-{
-       struct cli_alias *alias = obj;
-       alias->marked = 1;
-       return 0;
-}
-
-/*! \brief Function called to see if an alias is marked for destruction */
+/*! \brief Function called to to see if an alias is marked for destruction, they always are! */
 static int alias_marked(void *obj, void *arg, int flags)
 {
-       struct cli_alias *alias = obj;
-       return alias->marked ? CMP_MATCH : 0;
+       return CMP_MATCH;
 }
 
 /*! \brief Function called to load or reload the configuration file */
@@ -197,9 +187,9 @@ static void load_config(int reload)
                return;
        }
 
-       /* Mark CLI aliases for pruning */
+       /* Destroy any existing CLI aliases */
        if (reload) {
-               ao2_callback(cli_aliases, OBJ_NODATA, alias_mark, NULL);
+               ao2_callback(cli_aliases, OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE , alias_marked, NULL);
        }
 
        for (v = ast_variable_browse(cfg, "general"); v; v = v->next) {
@@ -227,11 +217,6 @@ static void load_config(int reload)
                }
        }
 
-       /* Drop any CLI aliases that should no longer exist */
-       if (reload) {
-               ao2_callback(cli_aliases, OBJ_UNLINK | OBJ_NODATA | OBJ_MULTIPLE , alias_marked, NULL);
-       }
-
        ast_config_destroy(cfg);
 
        return;