From: Joshua Colp Date: Fri, 31 Mar 2017 21:31:24 +0000 (+0000) Subject: res_pjsip_session: Allow BYE to be sent on disconnected session. X-Git-Tag: 13.16.0-rc1~60^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bca9685d397ce470a026b3714af35944a06dee59;p=thirdparty%2Fasterisk.git res_pjsip_session: Allow BYE to be sent on disconnected session. It is perfectly acceptable for a BYE to be sent on a disconnected session. This occurs when we respond to a challenge to the BYE for authentication credentials. ASTERISK-26363 Change-Id: I6ef0ddece812fea6665a1dd2549ef44fb9d90045 --- diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c index 53841c44af..0a18a80187 100644 --- a/res/res_pjsip_session.c +++ b/res/res_pjsip_session.c @@ -1198,8 +1198,13 @@ void ast_sip_session_send_request_with_cb(struct ast_sip_session *session, pjsip { pjsip_inv_session *inv_session = session->inv_session; - if (inv_session->state == PJSIP_INV_STATE_DISCONNECTED) { - /* Don't try to do anything with a hung-up call */ + /* For every request except BYE we disallow sending of the message when + * the session has been disconnected. A BYE request is special though + * because it can be sent again after the session is disconnected except + * with credentials. + */ + if (inv_session->state == PJSIP_INV_STATE_DISCONNECTED && + tdata->msg->line.req.method.id != PJSIP_BYE_METHOD) { return; }