Config inheritance doesn't work with ConfBridge() menu definitions

Current behavior in ConfBridge menu definitions is that first definition takes
precedence, even in templated situations.  This change allows inheritance and
overriding to work as expected so that the last definition takes precedence.

(closes ASTERISK-17986)
Review: https://reviewboard.asterisk.org/r/1267/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@323272 65c4cc65-6c06-0410-ace0-fbb531ad65f3
10-digiumphones
Kinsey Moore 14 years ago
parent dafa8a659b
commit 40ea500078

@ -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;

Loading…
Cancel
Save