diff options
-rw-r--r-- | bridges/bridge_native_rtp.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/bridges/bridge_native_rtp.c b/bridges/bridge_native_rtp.c index adb85ffd4..f6b0e68fa 100644 --- a/bridges/bridge_native_rtp.c +++ b/bridges/bridge_native_rtp.c @@ -229,10 +229,7 @@ static void native_rtp_bridge_stop(struct ast_bridge *bridge, struct ast_channel } break; case AST_RTP_GLUE_RESULT_REMOTE: - if (!target) { - glue0->update_peer(bc0->chan, NULL, NULL, NULL, NULL, 0); - glue1->update_peer(bc1->chan, NULL, NULL, NULL, NULL, 0); - } else { + if (target) { /* * If a target was provided, it is being put on hold and should expect to * receive media from Asterisk instead of what it was previously connected to. @@ -248,6 +245,11 @@ static void native_rtp_bridge_stop(struct ast_bridge *bridge, struct ast_channel break; } + if (!target && native_type != AST_RTP_GLUE_RESULT_FORBID) { + glue0->update_peer(bc0->chan, NULL, NULL, NULL, NULL, 0); + glue1->update_peer(bc1->chan, NULL, NULL, NULL, NULL, 0); + } + ast_debug(2, "Discontinued RTP bridging of '%s' and '%s' - media will flow through Asterisk core\n", ast_channel_name(bc0->chan), ast_channel_name(bc1->chan)); |