From cc61f11427bbad8b302407c902fe04cd10fa4f91 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Sat, 29 Jun 2019 02:13:34 +0400 Subject: [PATCH] Revert "FS-11417: [mod_conference] Unbounded memory growth during screen share #resolve" This reverts commit 143323e6ef466f51ed3aa3f1e6b7cd938ccba06e. --- .../mod_conference/conference_loop.c | 6 +----- .../mod_conference/mod_conference.c | 19 +++++++++---------- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/mod/applications/mod_conference/conference_loop.c b/src/mod/applications/mod_conference/conference_loop.c index 78024f10de..49377312c6 100644 --- a/src/mod/applications/mod_conference/conference_loop.c +++ b/src/mod/applications/mod_conference/conference_loop.c @@ -939,10 +939,6 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob goto do_continue; } - if (!switch_channel_test_app_flag(channel, CF_AUDIO)) { - goto do_continue; - } - /* if the member can speak, compute the audio energy level and */ /* generate events when the level crosses the threshold */ if (((conference_utils_member_test_flag(member, MFLAG_CAN_SPEAK) && !conference_utils_member_test_flag(member, MFLAG_HOLD)) || @@ -1232,7 +1228,7 @@ void *SWITCH_THREAD_FUNC conference_loop_input(switch_thread_t *thread, void *ob if (datalen) { switch_size_t ok = 1; - + /* Write the audio into the input buffer */ switch_mutex_lock(member->audio_in_mutex); if (switch_buffer_inuse(member->audio_buffer) > flush_len) { diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 86be4911a8..5562272309 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -611,7 +611,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob for (omember = conference->members; omember; omember = omember->next) { switch_size_t ok = 1; - if (!conference_utils_member_test_flag(omember, MFLAG_RUNNING) || !switch_channel_test_flag(omember->channel, CF_AUDIO)) { + if (!conference_utils_member_test_flag(omember, MFLAG_RUNNING)) { continue; } @@ -667,14 +667,13 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob write_frame[x] = (int16_t) z; } - if (switch_channel_test_flag(omember->channel, CF_AUDIO)) { - switch_mutex_lock(omember->audio_out_mutex); - ok = switch_buffer_write(omember->mux_buffer, write_frame, bytes); - switch_mutex_unlock(omember->audio_out_mutex); - if (!ok) { - switch_mutex_unlock(conference->mutex); - goto end; - } + switch_mutex_lock(omember->audio_out_mutex); + ok = switch_buffer_write(omember->mux_buffer, write_frame, bytes); + switch_mutex_unlock(omember->audio_out_mutex); + + if (!ok) { + switch_mutex_unlock(conference->mutex); + goto end; } } } else { /* There is no source audio. Push silence into all of the buffers */ @@ -689,7 +688,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob for (omember = conference->members; omember; omember = omember->next) { switch_size_t ok = 1; - if (!conference_utils_member_test_flag(omember, MFLAG_RUNNING) || !switch_channel_test_flag(omember->channel, CF_AUDIO)) { + if (!conference_utils_member_test_flag(omember, MFLAG_RUNNING)) { continue; }