]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fix null mutex race cond
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 15 Dec 2008 16:10:20 +0000 (16:10 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 15 Dec 2008 16:10:20 +0000 (16:10 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10766 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/switch_core_io.c

index 990df63ef1189b5431726c27ca05ca1d2f704c36..5286bc94e7655865ca00554b4f354d9cf6f5f063 100644 (file)
@@ -600,12 +600,16 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_write_frame(switch_core_sess
        switch_assert(frame->codec != NULL);
        switch_assert(frame->codec->implementation != NULL);
 
-       if (!(session->write_codec && frame->codec)) {
+       switch_mutex_lock(session->codec_write_mutex);  
+
+       if (!(session->write_codec && session->write_codec->mutex && frame->codec)) {
+               switch_mutex_unlock(session->codec_write_mutex);        
                return SWITCH_STATUS_FALSE;
        }
+
        switch_mutex_lock(session->write_codec->mutex);
        switch_mutex_lock(frame->codec->mutex);
-       switch_mutex_lock(session->codec_write_mutex);  
+
 
        if ((session->write_codec && frame->codec && session->write_codec->implementation != frame->codec->implementation)) {
                if (session->write_codec->implementation->codec_id == frame->codec->implementation->codec_id) {