]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7513: tweak locking on video read callback
authorAnthony Minessale <anthm@freeswitch.org>
Tue, 20 Jan 2015 18:17:46 +0000 (12:17 -0600)
committerMichael Jerris <mike@jerris.com>
Thu, 28 May 2015 17:46:54 +0000 (12:46 -0500)
src/mod/applications/mod_conference/mod_conference.c

index 605481d38537e01e18c3603dc54f06b888676919..2f965f58c706da097ad267c67820f216e6288eb5 100644 (file)
@@ -2986,6 +2986,11 @@ switch_status_t video_thread_callback(switch_core_session_t *session, switch_fra
        switch_assert(member);
 
        lock_member(member);
+       
+       if (switch_thread_rwlock_tryrdlock(member->conference->rwlock) != SWITCH_STATUS_SUCCESS) {
+               unlock_member(member);
+               return SWITCH_STATUS_FALSE;
+       }
 
        for (rel = member->relationships; rel; rel = rel->next) {
                conference_member_t *imember;
@@ -3011,7 +3016,7 @@ switch_status_t video_thread_callback(switch_core_session_t *session, switch_fra
 
                last = rel;
        }
-       unlock_member(member);
+
 
        if (member) {
                if (member->id == member->conference->video_floor_holder) {
@@ -3026,6 +3031,9 @@ switch_status_t video_thread_callback(switch_core_session_t *session, switch_fra
                }
        }
 
+       unlock_member(member);
+       switch_thread_rwlock_unlock(member->conference->rwlock);
+
        return SWITCH_STATUS_SUCCESS;
 }