From 4f123c46828d29d8d571f0cdf03fa35381e4ea0d Mon Sep 17 00:00:00 2001 From: Jakub Karolczyk Date: Tue, 23 Nov 2021 12:21:55 +0000 Subject: [PATCH] [mod_conference] Set conference vars from core/channel variables --- .../mod_conference/mod_conference.c | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 4ed7a595c3..ec1cd5c8f7 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -2680,6 +2680,22 @@ const char *conference_get_variable(conference_obj_t *conference, const char *va return rval; } +static void check_var_event(conference_obj_t *conference, switch_event_t *var_event) +{ + switch_event_header_t *hi = NULL; + + for (hi = var_event->headers; hi; hi = hi->next) { + char *vvar = hi->name; + char *vval = hi->value; + if (vvar && vval && !strncasecmp(vvar, "confvar_", 8)) { + vvar += 8; + if (vvar) { + conference_set_variable(conference, vvar, vval); + } + } + } +} + /* create a new conferene with a specific profile */ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_core_session_t *session, switch_memory_pool_t *pool) { @@ -2784,6 +2800,7 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co char *video_codec_config_profile_name = NULL; int tmp; int heartbeat_period_sec = 0; + switch_event_t *var_event = NULL; /* Validate the conference name */ if (zstr(name)) { @@ -3689,6 +3706,14 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co switch_mutex_init(&conference->member_mutex, SWITCH_MUTEX_NESTED, conference->pool); switch_mutex_init(&conference->canvas_mutex, SWITCH_MUTEX_NESTED, conference->pool); + switch_core_get_variables(&var_event); + check_var_event(conference, var_event); + switch_event_destroy(&var_event); + + switch_channel_get_variables(channel, &var_event); + check_var_event(conference, var_event); + switch_event_destroy(&var_event); + switch_mutex_lock(conference_globals.hash_mutex); conference_utils_set_flag(conference, CFLAG_INHASH); switch_core_hash_insert(conference_globals.conference_hash, conference->name, conference);