summaryrefslogtreecommitdiff
path: root/pjsip/src/pjsua-lib/pjsua_pres.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip/src/pjsua-lib/pjsua_pres.c')
-rw-r--r--pjsip/src/pjsua-lib/pjsua_pres.c9
1 files changed, 6 insertions, 3 deletions
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;