res_pjsip_session: Don't aggressively terminate on failed re-INVITE.

Per the RFC when an outgoing re-INVITE is done we should
only terminate the dialog if a 481 or 408 is received.

ASTERISK-29033

Change-Id: I6c3ff513aa41005d02de0396ba820083e9b18503
This commit is contained in:
Joshua C. Colp 2020-08-18 06:36:05 -03:00 committed by Friendly Automation
parent 5ec7099312
commit 3c074038fe
1 changed files with 5 additions and 2 deletions

View File

@ -4071,8 +4071,11 @@ static void session_inv_on_tsx_state_changed(pjsip_inv_session *inv, pjsip_trans
ast_sip_session_send_request_with_cb(session, tdata, cb);
SCOPE_EXIT_RTN("Sending authed reinvite\n");
}
if (tsx->status_code != 488 && tsx->status_code != 500) {
/* Other reinvite failures (except 488 and 500) result in destroying the session. */
/* Per RFC3261 14.1 a response to a re-INVITE should only terminate
* the dialog if a 481 or 408 occurs. All other responses should leave
* the dialog untouched.
*/
if (tsx->status_code == 481 || tsx->status_code == 408) {
if (pjsip_inv_end_session(inv, 500, NULL, &tdata) == PJ_SUCCESS
&& tdata) {
ast_sip_session_send_request(session, tdata);