summaryrefslogtreecommitdiff
path: root/bridges/bridge_native_rtp.c
diff options
context:
space:
mode:
Diffstat (limited to 'bridges/bridge_native_rtp.c')
-rw-r--r--bridges/bridge_native_rtp.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/bridges/bridge_native_rtp.c b/bridges/bridge_native_rtp.c
index 054d89ca0..ce050c89e 100644
--- a/bridges/bridge_native_rtp.c
+++ b/bridges/bridge_native_rtp.c
@@ -317,7 +317,8 @@ static int native_rtp_bridge_join(struct ast_bridge *bridge, struct ast_bridge_c
glue1->get_codec(c1->chan, cap1);
}
- if (native_type == AST_RTP_GLUE_RESULT_LOCAL) {
+ switch (native_type) {
+ case AST_RTP_GLUE_RESULT_LOCAL:
if (ast_rtp_instance_get_engine(instance0)->local_bridge) {
ast_rtp_instance_get_engine(instance0)->local_bridge(instance0, instance1);
}
@@ -326,9 +327,14 @@ static int native_rtp_bridge_join(struct ast_bridge *bridge, struct ast_bridge_c
}
ast_rtp_instance_set_bridged(instance0, instance1);
ast_rtp_instance_set_bridged(instance1, instance0);
- } else {
+ break;
+
+ case AST_RTP_GLUE_RESULT_REMOTE:
glue0->update_peer(c0->chan, instance1, vinstance1, tinstance1, cap1, 0);
glue1->update_peer(c1->chan, instance0, vinstance0, tinstance0, cap0, 0);
+ break;
+ case AST_RTP_GLUE_RESULT_FORBID:
+ break;
}
return 0;
@@ -354,7 +360,8 @@ static void native_rtp_bridge_leave(struct ast_bridge *bridge, struct ast_bridge
native_type = native_rtp_bridge_get(c0->chan, c1 ? c1->chan : NULL, &glue0, &glue1, &instance0, &instance1, &vinstance0, &vinstance1);
- if (native_type == AST_RTP_GLUE_RESULT_LOCAL) {
+ switch (native_type) {
+ case AST_RTP_GLUE_RESULT_LOCAL:
if (ast_rtp_instance_get_engine(instance0)->local_bridge) {
ast_rtp_instance_get_engine(instance0)->local_bridge(instance0, NULL);
}
@@ -365,11 +372,15 @@ static void native_rtp_bridge_leave(struct ast_bridge *bridge, struct ast_bridge
if (instance1) {
ast_rtp_instance_set_bridged(instance1, instance0);
}
- } else {
+ break;
+ case AST_RTP_GLUE_RESULT_REMOTE:
glue0->update_peer(c0->chan, NULL, NULL, NULL, NULL, 0);
if (glue1) {
glue1->update_peer(c1->chan, NULL, NULL, NULL, NULL, 0);
}
+ break;
+ case AST_RTP_GLUE_RESULT_FORBID:
+ break;
}
}