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
This commit is contained in:
Joshua Colp 2017-03-31 21:31:24 +00:00
parent e8b1bb3041
commit 48be02c5d8
1 changed files with 7 additions and 2 deletions

View File

@ -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;
}