Fix a crash in pjnath when starting an ICE connectivity check and immediately destroy...
authorJoshua Colp <jcolp@digium.com>
Wed, 18 Jul 2012 15:15:41 +0000 (15:15 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 18 Jul 2012 15:15:41 +0000 (15:15 +0000)
The initial ICE connectivity check is scheduled as a timer item that is to be executed immediately. It is possible for this timer item to start executing while the ICE session it is working on is destroyed. To reduce the chance of this any timer items that need to be immediately executed will be executed within the thread that has started the initial ICE connectivity check.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@370177 65c4cc65-6c06-0410-ace0-fbb531ad65f3

res/res_rtp_asterisk.c

index 347f29c..6c6aa15 100644 (file)
@@ -489,6 +489,7 @@ static void ast_rtp_ice_start(struct ast_rtp_instance *instance)
 
        if (pj_ice_sess_create_check_list(rtp->ice, &ufrag, &passwd, ao2_container_count(rtp->remote_candidates), &candidates[0]) == PJ_SUCCESS) {
                pj_ice_sess_start_check(rtp->ice);
+               pj_timer_heap_poll(timerheap, NULL);
                rtp->ice_started = 1;
        }
 }