summaryrefslogtreecommitdiff
path: root/pjsip-apps/src/samples/simpleua.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjsip-apps/src/samples/simpleua.c')
-rw-r--r--pjsip-apps/src/samples/simpleua.c25
1 files changed, 19 insertions, 6 deletions
diff --git a/pjsip-apps/src/samples/simpleua.c b/pjsip-apps/src/samples/simpleua.c
index b7f10250..a1bac754 100644
--- a/pjsip-apps/src/samples/simpleua.c
+++ b/pjsip-apps/src/samples/simpleua.c
@@ -725,10 +725,10 @@ static pj_bool_t on_rx_request( pjsip_rx_data *rdata )
/*
* Create UAS dialog.
*/
- status = pjsip_dlg_create_uas( pjsip_ua_instance(),
- rdata,
- &local_uri, /* contact */
- &dlg);
+ status = pjsip_dlg_create_uas_and_inc_lock( pjsip_ua_instance(),
+ rdata,
+ &local_uri, /* contact */
+ &dlg);
if (status != PJ_SUCCESS) {
pjsip_endpt_respond_stateless(g_endpt, rdata, 500, NULL,
NULL, NULL);
@@ -741,7 +741,11 @@ static pj_bool_t on_rx_request( pjsip_rx_data *rdata )
status = pjmedia_endpt_create_sdp( g_med_endpt, rdata->tp_info.pool,
MAX_MEDIA_CNT, g_sock_info, &local_sdp);
- PJ_ASSERT_RETURN(status == PJ_SUCCESS, PJ_TRUE);
+ pj_assert(status == PJ_SUCCESS);
+ if (status != PJ_SUCCESS) {
+ pjsip_dlg_dec_lock(dlg);
+ return PJ_TRUE;
+ }
/*
@@ -749,7 +753,16 @@ static pj_bool_t on_rx_request( pjsip_rx_data *rdata )
* capability to the session.
*/
status = pjsip_inv_create_uas( dlg, rdata, local_sdp, 0, &g_inv);
- PJ_ASSERT_RETURN(status == PJ_SUCCESS, PJ_TRUE);
+ pj_assert(status == PJ_SUCCESS);
+ if (status != PJ_SUCCESS) {
+ pjsip_dlg_dec_lock(dlg);
+ return PJ_TRUE;
+ }
+
+ /*
+ * Invite session has been created, decrement & release dialog lock.
+ */
+ pjsip_dlg_dec_lock(dlg);
/*