Ignore:
Timestamp:
Jun 11, 2012 5:15:59 AM (12 years ago)
Author:
bennylp
Message:

Fixed #1533: Deadlock in processing media transport asynchronous creation completion (thank you Itay Bianco for the report)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/src/pjsua-lib/pjsua_media.c

    r4136 r4163  
    516516{ 
    517517    pjsua_call_media *call_med = (pjsua_call_media*)user_data; 
    518  
    519     PJSUA_LOCK(); 
     518    pjsua_call *call = NULL; 
     519    pjsip_dialog *dlg = NULL; 
     520 
     521    acquire_call("med_tp_timer_cb", call_med->call->index, &call, &dlg); 
    520522 
    521523    call_med->tp_ready = call_med->tp_result; 
     
    524526                                   call_med->call->secure_level, NULL); 
    525527 
    526     PJSUA_UNLOCK(); 
     528    if (dlg) 
     529        pjsip_dlg_dec_lock(dlg); 
    527530} 
    528531 
     
    21032106    unsigned mi; 
    21042107 
    2105     PJSUA_LOCK(); 
    21062108    for (mi=0; mi<call->med_cnt; ++mi) { 
    21072109        pjsua_call_media *call_med = &call->media[mi]; 
     
    21122114             */ 
    21132115            call->async_call.med_ch_deinit = PJ_TRUE; 
    2114             PJSUA_UNLOCK(); 
    21152116            return PJ_SUCCESS; 
    21162117        } 
    21172118    } 
    2118     PJSUA_UNLOCK(); 
    21192119 
    21202120    PJ_LOG(4,(THIS_FILE, "Call %d: deinitializing media..", call_id)); 
Note: See TracChangeset for help on using the changeset viewer.