summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorKevin Harwell <kharwell@digium.com>2015-04-23 17:29:51 -0500
committerKevin Harwell <kharwell@digium.com>2015-04-24 12:20:45 -0500
commit9f65ea482ec8b54a52715c6a82fc3bd565ddb813 (patch)
treee34aab1fce529b69df7db00f948781f41cb11345 /apps
parent1a8355622da2cad7e9748fda495795ca9ed9d38a (diff)
app_confbridge: Default the template option to a compatible default profile.
Confbridge dynamic profiles did not have a default profile unless you explicitly used Set(CONFBRIDGE(bridge,template)=default_bridge). If a template was not set prior to the bridge being created then some options were left with no default values set. This patch makes it so the default templates are set to the default bridge and user profiles. ASTERISK-24749 #close Reported by: philippebolduc Change-Id: I1bd6e94b38701ac2112d842db68de63d46f60e0a
Diffstat (limited to 'apps')
-rw-r--r--apps/confbridge/conf_config_parser.c32
1 files changed, 29 insertions, 3 deletions
diff --git a/apps/confbridge/conf_config_parser.c b/apps/confbridge/conf_config_parser.c
index d3ffcb881..7fcc7005c 100644
--- a/apps/confbridge/conf_config_parser.c
+++ b/apps/confbridge/conf_config_parser.c
@@ -963,12 +963,17 @@ static const struct ast_datastore_info confbridge_datastore = {
.type = "confbridge",
.destroy = func_confbridge_destroy_cb
};
+
int func_confbridge_helper(struct ast_channel *chan, const char *cmd, char *data, const char *value)
{
struct ast_datastore *datastore;
struct func_confbridge_data *b_data;
char *parse;
struct ast_variable tmpvar = { 0, };
+ struct ast_variable template = {
+ .name = "template",
+ .file = "CONFBRIDGE"
+ };
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(type);
AST_APP_ARG(option);
@@ -1041,7 +1046,14 @@ int func_confbridge_helper(struct ast_channel *chan, const char *cmd, char *data
ast_datastore_free(datastore);
}
return 0;
- } else if (!aco_process_var(&bridge_type, "dialplan", &tmpvar, &b_data->b_profile)) {
+ }
+
+ if (b_data && !b_data->b_usable && strcasecmp(args.option, "template")) {
+ template.value = DEFAULT_BRIDGE_PROFILE;
+ aco_process_var(&bridge_type, "dialplan", &template, &b_data->b_profile);
+ }
+
+ if (!aco_process_var(&bridge_type, "dialplan", &tmpvar, &b_data->b_profile)) {
b_data->b_usable = 1;
return 0;
}
@@ -1051,7 +1063,14 @@ int func_confbridge_helper(struct ast_channel *chan, const char *cmd, char *data
user_profile_destructor(&b_data->u_profile);
memset(&b_data->u_profile, 0, sizeof(b_data->u_profile));
return 0;
- } else if (!aco_process_var(&user_type, "dialplan", &tmpvar, &b_data->u_profile)) {
+ }
+
+ if (b_data && !b_data->u_usable && strcasecmp(args.option, "template")) {
+ template.value = DEFAULT_USER_PROFILE;
+ aco_process_var(&user_type, "dialplan", &template, &b_data->u_profile);
+ }
+
+ if (!aco_process_var(&user_type, "dialplan", &tmpvar, &b_data->u_profile)) {
b_data->u_usable = 1;
return 0;
}
@@ -1067,7 +1086,14 @@ int func_confbridge_helper(struct ast_channel *chan, const char *cmd, char *data
ast_datastore_free(datastore);
}
return 0;
- } else if (!aco_process_var(&menu_type, "dialplan", &tmpvar, b_data->menu)) {
+ }
+
+ if (b_data && !b_data->m_usable && strcasecmp(args.option, "template")) {
+ template.value = DEFAULT_MENU_PROFILE;
+ aco_process_var(&menu_type, "dialplan", &template, &b_data->menu);
+ }
+
+ if (!aco_process_var(&menu_type, "dialplan", &tmpvar, b_data->menu)) {
b_data->m_usable = 1;
return 0;
}