From 99a9537cd48e7e749c143545a2456ece1f5d6891 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 4 Jan 2016 13:37:29 -0600 Subject: [PATCH] FS-8673 --- src/switch_core_io.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/switch_core_io.c b/src/switch_core_io.c index 04e0c14f9f..8c3bf14b7e 100644 --- a/src/switch_core_io.c +++ b/src/switch_core_io.c @@ -121,13 +121,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi switch_mutex_lock(session->read_codec->mutex); - switch_thread_rwlock_rdlock(session->bug_rwlock); - if (session->bugs) { - bug_locked = 1; - } else { - switch_thread_rwlock_unlock(session->bug_rwlock); - } - top: for(i = 0; i < 2; i++) { @@ -239,6 +232,15 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi goto done; } + if (!bug_locked) { + switch_thread_rwlock_rdlock(session->bug_rwlock); + if (session->bugs) { + bug_locked = 1; + } else { + switch_thread_rwlock_unlock(session->bug_rwlock); + } + } + if (session->bugs && !((*frame)->flags & SFF_CNG) && !((*frame)->flags & SFF_NOT_AUDIO)) { switch_media_bug_t *bp; switch_bool_t ok = SWITCH_TRUE; @@ -915,14 +917,14 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi bail_out: - if (global_prune) { - switch_core_media_bug_prune(session); - } - if (bug_locked) { switch_thread_rwlock_unlock(session->bug_rwlock); } + if (global_prune) { + switch_core_media_bug_prune(session); + } + return status; }