diff options
author | Jenkins2 <jenkins2@gerrit.asterisk.org> | 2017-12-19 10:37:53 -0600 |
---|---|---|
committer | Gerrit Code Review <gerrit2@gerrit.digium.api> | 2017-12-19 10:37:53 -0600 |
commit | ece673f0f69d323b727362b69467f8fc725df6e5 (patch) | |
tree | 54307d1265ee399db0f0f27a55c45f44b722c020 /bridges | |
parent | 758b321f4cfbb5a5a9aec9b15aeceb20125a13ad (diff) | |
parent | 4c04e137830141d33dbaa7d709a103136cc91b5f (diff) |
Merge "bridge_softmix.c: Change remove_destination_streams() return meaning."
Diffstat (limited to 'bridges')
-rw-r--r-- | bridges/bridge_softmix.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/bridges/bridge_softmix.c b/bridges/bridge_softmix.c index 6460a6ea2..13f98eaea 100644 --- a/bridges/bridge_softmix.c +++ b/bridges/bridge_softmix.c @@ -698,10 +698,11 @@ static int softmix_bridge_join(struct ast_bridge *bridge, struct ast_bridge_chan return 0; } -static void remove_destination_streams(struct ast_stream_topology *topology, +static int remove_destination_streams(struct ast_stream_topology *topology, const char *channel_name) { int i; + int stream_removed = 0; for (i = 0; i < ast_stream_topology_get_count(topology); ++i) { struct ast_stream *stream; @@ -710,8 +711,10 @@ static void remove_destination_streams(struct ast_stream_topology *topology, if (is_video_dest(stream, channel_name, NULL)) { ast_stream_set_state(stream, AST_STREAM_STATE_REMOVED); + stream_removed = 1; } } + return stream_removed; } static int sfu_topologies_on_leave(struct ast_bridge_channel *leaver, struct ast_bridge_channels_list *participants) @@ -721,13 +724,16 @@ static int sfu_topologies_on_leave(struct ast_bridge_channel *leaver, struct ast AST_LIST_TRAVERSE(participants, participant, entry) { sc = participant->tech_pvt; - remove_destination_streams(sc->topology, ast_channel_name(leaver->chan)); + if (!remove_destination_streams(sc->topology, ast_channel_name(leaver->chan))) { + continue; + } ast_channel_request_stream_topology_change(participant->chan, sc->topology, NULL); } sc = leaver->tech_pvt; - remove_destination_streams(sc->topology, ""); - ast_channel_request_stream_topology_change(leaver->chan, sc->topology, NULL); + if (remove_destination_streams(sc->topology, "")) { + ast_channel_request_stream_topology_change(leaver->chan, sc->topology, NULL); + } return 0; } |