diff options
author | Jaco Kroon <jaco@uls.co.za> | 2016-05-04 09:40:55 +0200 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2016-05-09 08:18:56 -0500 |
commit | 8923c9ac965a156bd2c0839e95d30023cd4088d4 (patch) | |
tree | 984691683cf0e7e6c0abde8e4885e9e28bf242e1 /apps/app_confbridge.c | |
parent | 716411234c48484e1d37efa5fce81c62b7df234b (diff) |
app_confbridge: Add a regcontext option for confbridge bridge profiles.
This patch allows for having app_confbridge register the name of the
conference as an extension into a specific context, similar to
regcontext for chan_sip. This variant is not quite as involved as the
one in chan_sip and doesn't allow for multiple contexts or custom
extensions, you can only specify the context and the conference name
will always be used as the extension to register.
ASTERISK-25989 #close
Change-Id: Icacf94d9f2b5dfd31ef36f6cb702392619a7902f
Diffstat (limited to 'apps/app_confbridge.c')
-rw-r--r-- | apps/app_confbridge.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c index b3609b673..82204c48f 100644 --- a/apps/app_confbridge.c +++ b/apps/app_confbridge.c @@ -1256,9 +1256,17 @@ void conf_handle_second_active(struct confbridge_conference *conference) void conf_ended(struct confbridge_conference *conference) { + struct pbx_find_info q = { .stacklen = 0 }; + /* Called with a reference to conference */ ao2_unlink(conference_bridges, conference); send_conf_end_event(conference); + if (!ast_strlen_zero(conference->b_profile.regcontext) && + pbx_find_extension(NULL, NULL, &q, conference->b_profile.regcontext, + conference->name, 1, NULL, "", E_MATCH)) { + ast_context_remove_extension(conference->b_profile.regcontext, + conference->name, 1, NULL); + } ao2_lock(conference); conf_stop_record(conference); ao2_unlock(conference); @@ -1363,6 +1371,13 @@ static struct confbridge_conference *join_conference_bridge(const char *conferen } send_conf_start_event(conference); + + if (!ast_strlen_zero(conference->b_profile.regcontext)) { + if (!ast_exists_extension(NULL, conference->b_profile.regcontext, conference->name, 1, NULL)) { + ast_add_extension(conference->b_profile.regcontext, 1, conference->name, 1, NULL, NULL, "Noop", NULL, NULL, "ConfBridge"); + } + } + ast_debug(1, "Created conference '%s' and linked to container.\n", conference_name); } |