From 738c44405bf3c803f1f1c23423cd25fab48687a5 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Thu, 6 Jun 2013 23:32:13 +0000 Subject: Conditionally reject duplicate entries in applicationmap containers. When reading from a config file, it's important to reject duplicates. Otherwise, featuregroups will have ambiguity when pointing to applicationmap items. However, when constructing the channel's current applicationmap, we don't care about duplicate names since it's the DTMF that identifies a feature, not the name. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@390787 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/features_config.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'main') diff --git a/main/features_config.c b/main/features_config.c index f8bdb1c3c..ab4be937a 100644 --- a/main/features_config.c +++ b/main/features_config.c @@ -418,10 +418,11 @@ static struct features_global_config *global_config_alloc(void) return cfg; } -static struct ao2_container *applicationmap_alloc(void) +static struct ao2_container *applicationmap_alloc(int reject_duplicates) { return ao2_container_alloc_list(AO2_ALLOC_OPT_LOCK_NOLOCK, - AO2_CONTAINER_ALLOC_OPT_DUPS_REJECT, applicationmap_sort, NULL); + reject_duplicates ? AO2_CONTAINER_ALLOC_OPT_DUPS_REJECT : AO2_CONTAINER_ALLOC_OPT_DUPS_ALLOW, + applicationmap_sort, NULL); } /*! @@ -457,7 +458,7 @@ static struct features_config *__features_config_alloc(int allocate_applicationm } if (allocate_applicationmap) { - cfg->applicationmap = applicationmap_alloc(); + cfg->applicationmap = applicationmap_alloc(1); if (!cfg->applicationmap) { return NULL; } @@ -999,7 +1000,7 @@ struct ao2_container *ast_get_chan_applicationmap(struct ast_channel *chan) return NULL; } - applicationmap = applicationmap_alloc(); + applicationmap = applicationmap_alloc(0); if (!applicationmap) { return NULL; } -- cgit v1.2.3