From 3a73a091c1b923f2c1fe94e45770127b4300c7e6 Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Tue, 20 Dec 2011 10:27:39 +0000 Subject: Fixed #1430: Crash when dialog is prematurely destroyed during outgoing call. We do this by temporarily incrementing dialog session until the invite session is created. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3918 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/src/pjsua-lib/pjsua_call.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pjsip/src/pjsua-lib/pjsua_call.c b/pjsip/src/pjsua-lib/pjsua_call.c index ece37d51..020570cd 100644 --- a/pjsip/src/pjsua-lib/pjsua_call.c +++ b/pjsip/src/pjsua-lib/pjsua_call.c @@ -364,6 +364,9 @@ on_make_call_med_tp_complete(pjsua_call_id call_id, */ pjsip_dlg_inc_lock(dlg); + /* Decrement dialog session. */ + pjsip_dlg_dec_session(dlg, &pjsua_var.mod); + if (status != PJ_SUCCESS) { pjsua_perror(THIS_FILE, "Error initializing media channel", status); goto on_error; @@ -723,6 +726,12 @@ PJ_DEF(pj_status_t) pjsua_call_make_call(pjsua_acc_id acc_id, goto on_error; } + /* Temporarily increment dialog session. Without this, dialog will be + * prematurely destroyed if dec_lock() is called on the dialog before + * the invite session is created. + */ + pjsip_dlg_inc_session(dlg, &pjsua_var.mod); + /* Done. */ if (p_call_id) -- cgit v1.2.3