aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/confbridge/conf_config_parser.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/apps/confbridge/conf_config_parser.c b/apps/confbridge/conf_config_parser.c
index dbec32bba..3d1f31326 100644
--- a/apps/confbridge/conf_config_parser.c
+++ b/apps/confbridge/conf_config_parser.c
@@ -582,7 +582,7 @@ static int add_action_to_menu_entry(struct conf_menu_entry *menu_entry, enum con
static int add_menu_entry(struct conf_menu *menu, const char *dtmf, const char *action_names)
{
- struct conf_menu_entry *menu_entry = NULL;
+ struct conf_menu_entry *menu_entry = NULL, *cur = NULL;
int res = 0;
char *tmp_action_names = ast_strdupa(action_names);
char *action = NULL;
@@ -691,6 +691,16 @@ static int add_menu_entry(struct conf_menu *menu, const char *dtmf, const char *
return -1;
}
+ /* remove any list entry with an identical DTMF sequence for overrides */
+ AST_LIST_TRAVERSE_SAFE_BEGIN(&menu->entries, cur, entry) {
+ if (!strcasecmp(cur->dtmf, menu_entry->dtmf)) {
+ AST_LIST_REMOVE_CURRENT(entry);
+ ast_free(cur);
+ break;
+ }
+ }
+ AST_LIST_TRAVERSE_SAFE_END;
+
AST_LIST_INSERT_TAIL(&menu->entries, menu_entry, entry);
return 0;