From 3985dd57937870f3d47a4ddd68b477a42ffddec1 Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Fri, 5 Feb 2016 04:29:17 +0000 Subject: Fixed #1902: - Crash when endpoint has multiple worker threads and SIP TCP transport is disconnected during incoming call handling. - Deprecated pjsip_dlg_create_uas(), replaced by pjsip_dlg_create_uas_and_inc_lock(). - Serialized transaction state notifications (of 'terminated' and 'destroyed') in case of transport error. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5241 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua-lib/pjsua_pres.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'pjsip/src/pjsua-lib/pjsua_pres.c') diff --git a/pjsip/src/pjsua-lib/pjsua_pres.c b/pjsip/src/pjsua-lib/pjsua_pres.c index 6b35070f..bc22143d 100644 --- a/pjsip/src/pjsua-lib/pjsua_pres.c +++ b/pjsip/src/pjsua-lib/pjsua_pres.c @@ -855,8 +855,8 @@ static pj_bool_t pres_on_rx_request(pjsip_rx_data *rdata) } /* Create UAS dialog: */ - status = pjsip_dlg_create_uas(pjsip_ua_instance(), rdata, - &contact, &dlg); + status = pjsip_dlg_create_uas_and_inc_lock(pjsip_ua_instance(), rdata, + &contact, &dlg); if (status != PJ_SUCCESS) { pjsua_perror(THIS_FILE, "Unable to create UAS dialog for subscription", @@ -921,11 +921,15 @@ static pj_bool_t pres_on_rx_request(pjsip_rx_data *rdata) tdata); } + pjsip_dlg_dec_lock(dlg); PJSUA_UNLOCK(); pj_log_pop_indent(); return PJ_TRUE; } + /* Subscription has been created, decrement & release dlg lock */ + pjsip_dlg_dec_lock(dlg); + /* If account is locked to specific transport, then lock dialog * to this transport too. */ @@ -1035,7 +1039,6 @@ static pj_bool_t pres_on_rx_request(pjsip_rx_data *rdata) } /* Done: */ - PJSUA_UNLOCK(); pj_log_pop_indent(); return PJ_TRUE; -- cgit v1.2.3