summaryrefslogtreecommitdiff
path: root/res/res_pjsip_session.c
diff options
context:
space:
mode:
authorMark Michelson <mmichelson@digium.com>2015-01-16 22:13:23 +0000
committerMark Michelson <mmichelson@digium.com>2015-01-16 22:13:23 +0000
commit831acba826ff3cb605a141a78c560dda66cdb19e (patch)
tree222daa63367abdaa6d168ebd164cae7bcb0cc2e3 /res/res_pjsip_session.c
parent023fa0f9e88558bf9b099b7aed9334b676fc89d8 (diff)
Fix problem where a hung channel could occur on a failed blind transfer.
Different clients react differently to being told that a blind transfer has failed. Some will simply send a BYE and be done with it. Others will attempt to reinvite themselves back onto the call. In the latter case, we were creating a new channel and then leaving it to sit forever doing nothing. With this code change, that new channel will not be created and the dialog with the transferring channel will be cleaned up properly. ASTERISK-24624 #close Reported by Zane Conkle Review: https://reviewboard.asterisk.org/r/4339 ........ Merged revisions 430714 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430715 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_pjsip_session.c')
-rw-r--r--res/res_pjsip_session.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index 606097700..d659684b9 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -779,7 +779,8 @@ static pj_bool_t session_reinvite_on_rx_request(pjsip_rx_data *rdata)
if (rdata->msg_info.msg->line.req.method.id != PJSIP_INVITE_METHOD ||
!(dlg = pjsip_ua_find_dialog(&rdata->msg_info.cid->id, &rdata->msg_info.to->tag, &rdata->msg_info.from->tag, PJ_FALSE)) ||
- !(session = ast_sip_dialog_get_session(dlg))) {
+ !(session = ast_sip_dialog_get_session(dlg)) ||
+ !session->channel) {
return PJ_FALSE;
}