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++) {
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;
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;
}