]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-4318 --resolve
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 18 Jun 2012 15:30:33 +0000 (10:30 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 18 Jun 2012 15:30:33 +0000 (10:30 -0500)
src/mod/applications/mod_conference/mod_conference.c

index c5a05c7fa7eaf4ca87214825d3745807f0bb9508..f46b8d935f4489cc9575c594a27e8338c31bd868 100644 (file)
@@ -1433,7 +1433,14 @@ static void *SWITCH_THREAD_FUNC conference_video_thread_run(switch_thread_t *thr
                want_refresh = 0;
 
                for (imember = conference->members; imember; imember = imember->next) {
-                       switch_channel_t *ichannel = switch_core_session_get_channel(imember->session);
+                       switch_core_session_t *isession = imember->session;
+                       switch_channel_t *ichannel;
+
+                       if (!isession || !switch_core_session_read_lock(isession)) {
+                               continue;
+                       }
+
+                       ichannel = switch_core_session_get_channel(imember->session);
 
                        if (switch_channel_test_flag(ichannel, CF_VIDEO_REFRESH_REQ)) {
                                want_refresh++;
@@ -1444,6 +1451,8 @@ static void *SWITCH_THREAD_FUNC conference_video_thread_run(switch_thread_t *thr
                                has_vid++;
                                switch_core_session_write_video_frame(imember->session, vid_frame, SWITCH_IO_FLAG_NONE, 0);
                        }
+
+                       switch_core_session_rwunlock(isession);
                }
                
                if (want_refresh) {