ARI: Ability to inhibit COLP frames when adding channels to a bridge

This patch adds a new flag "inhibitConnectedLineUpdates" to the 'addChannel'
operation in the Bridges REST API. When set, this flag avoids generating COLP
frames when the specified channels enter the bridge.

ASTERISK-28629

Change-Id: Ib995d4f0c6106279aa448b34b042b68f0f2ca5dc
This commit is contained in:
Jean Aunis
2019-11-22 15:32:42 +01:00
committed by Joshua C. Colp
parent 987e10c75f
commit 034ac357ad
8 changed files with 47 additions and 1 deletions

View File

@@ -1285,6 +1285,7 @@ int control_swap_channel_in_bridge(struct stasis_app_control *control, struct as
{
int res;
struct ast_bridge_features *features;
int flags = AST_BRIDGE_IMPART_CHAN_DEPARTABLE;
if (!control || !bridge) {
return -1;
@@ -1332,6 +1333,9 @@ int control_swap_channel_in_bridge(struct stasis_app_control *control, struct as
/* Pull bridge features from the control */
features = control->bridge_features;
control->bridge_features = NULL;
if (features && features->inhibit_colp) {
flags |= AST_BRIDGE_IMPART_INHIBIT_JOIN_COLP;
}
ast_assert(stasis_app_get_bridge(control) == NULL);
/* We need to set control->bridge here since bridge_after_cb may be run
@@ -1349,7 +1353,7 @@ int control_swap_channel_in_bridge(struct stasis_app_control *control, struct as
chan,
swap,
features, /* features */
AST_BRIDGE_IMPART_CHAN_DEPARTABLE);
flags);
if (res != 0) {
/* ast_bridge_impart failed before it could spawn the depart
* thread. The callbacks aren't called in this case.
@@ -1469,6 +1473,12 @@ void stasis_app_control_mute_in_bridge(
control->bridge_features->mute = mute;
}
void stasis_app_control_inhibit_colp_in_bridge(
struct stasis_app_control *control, int inhibit_colp)
{
control->bridge_features->inhibit_colp = inhibit_colp;
}
void control_flush_queue(struct stasis_app_control *control)
{
struct ao2_iterator iter;