diff --git a/apps/confbridge/conf_config_parser.c b/apps/confbridge/conf_config_parser.c index 1b1437b96a..98838de0a1 100644 --- a/apps/confbridge/conf_config_parser.c +++ b/apps/confbridge/conf_config_parser.c @@ -343,12 +343,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); @@ -405,11 +410,21 @@ int func_confbridge_helper(struct ast_channel *chan, const char *cmd, char *data tmpvar.value = value; tmpvar.file = "CONFBRIDGE"; if (!strcasecmp(args.type, "bridge")) { + 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; } } else if (!strcasecmp(args.type, "user")) { + 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;