summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/confbridge/conf_config_parser.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/apps/confbridge/conf_config_parser.c b/apps/confbridge/conf_config_parser.c
index ecb989f7b..560bee4e1 100644
--- a/apps/confbridge/conf_config_parser.c
+++ b/apps/confbridge/conf_config_parser.c
@@ -504,6 +504,7 @@ struct confbridge_cfg {
struct ao2_container *menus;
};
+static int verify_default_profiles(void);
static void *bridge_profile_alloc(const char *category);
static void *bridge_profile_find(struct ao2_container *container, const char *category);
static struct bridge_profile_sounds *bridge_profile_sounds_alloc(void);
@@ -641,6 +642,7 @@ static void *confbridge_cfg_alloc(void);
CONFIG_INFO_STANDARD(cfg_info, cfg_handle, confbridge_cfg_alloc,
.files = ACO_FILES(&confbridge_conf),
+ .pre_apply_config = verify_default_profiles,
);
/*! bridge profile container functions */
@@ -1749,6 +1751,41 @@ static int menu_option_handler(const struct aco_option *opt, struct ast_variable
return 0;
}
+static int verify_default_profiles(void)
+{
+ RAII_VAR(struct user_profile *, user_profile, NULL, ao2_cleanup);
+ RAII_VAR(struct bridge_profile *, bridge_profile, NULL, ao2_cleanup);
+ struct confbridge_cfg *cfg = aco_pending_config(&cfg_info);
+
+ if (!cfg) {
+ return 0;
+ }
+
+ bridge_profile = ao2_find(cfg->bridge_profiles, DEFAULT_BRIDGE_PROFILE, OBJ_KEY);
+ if (!bridge_profile) {
+ bridge_profile = bridge_profile_alloc(DEFAULT_BRIDGE_PROFILE);
+ if (!bridge_profile) {
+ return -1;
+ }
+ ast_log(AST_LOG_NOTICE, "Adding %s profile to app_confbridge\n", DEFAULT_BRIDGE_PROFILE);
+ aco_set_defaults(&bridge_type, DEFAULT_BRIDGE_PROFILE, bridge_profile);
+ ao2_link(cfg->bridge_profiles, bridge_profile);
+ }
+
+ user_profile = ao2_find(cfg->bridge_profiles, DEFAULT_USER_PROFILE, OBJ_KEY);
+ if (!user_profile) {
+ user_profile = user_profile_alloc(DEFAULT_USER_PROFILE);
+ if (!user_profile) {
+ return -1;
+ }
+ ast_log(AST_LOG_NOTICE, "Adding %s profile to app_confbridge\n", DEFAULT_USER_PROFILE);
+ aco_set_defaults(&user_type, DEFAULT_USER_PROFILE, user_profile);
+ ao2_link(cfg->user_profiles, user_profile);
+ }
+
+ return 0;
+}
+
int conf_load_config(int reload)
{
if (!reload) {