summaryrefslogtreecommitdiff
path: root/res
diff options
context:
space:
mode:
authorKevin Harwell <kharwell@digium.com>2017-09-22 15:29:24 -0500
committerKevin Harwell <kharwell@digium.com>2017-09-22 15:49:27 -0500
commit08440df3e35984de2d19c4b70fa8a8c550e10575 (patch)
tree25099c5f64fb7000df10c09c7e5879155d8aaa4b /res
parentc96a5ffa6e89a5fec32cf16fe41e978ce9ffd4de (diff)
res_pjsip_session: Don't end session when receiving a 500 on a reinvite
During a reinvite, if a remote endpoint error occurs and it returns a 500 the session would end. This patch makes it so the session is not terminated, but continues as it was. The reason for this is because some endpoints may send non session terminating "server errors" like a failed codec negotiation. So in this case instead of ending the call it can hopefully continue. In the case of a real server error the session is already "doomed", will be known soon enough and appropriately ended by Asterisk later. Change-Id: Ifeedae86b8cb44b92d52c79046522ec5f0aff1d5
Diffstat (limited to 'res')
-rw-r--r--res/res_pjsip_session.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/res/res_pjsip_session.c b/res/res_pjsip_session.c
index b5874574e..c974e48c7 100644
--- a/res/res_pjsip_session.c
+++ b/res/res_pjsip_session.c
@@ -3468,8 +3468,8 @@ static void session_inv_on_tsx_state_changed(pjsip_inv_session *inv, pjsip_trans
ast_sip_session_send_request_with_cb(session, tdata, cb);
return;
}
- if (tsx->status_code != 488) {
- /* Other reinvite failures (except 488) result in destroying the session. */
+ if (tsx->status_code != 488 && tsx->status_code != 500) {
+ /* Other reinvite failures (except 488 and 500) result in destroying the session. */
if (pjsip_inv_end_session(inv, 500, NULL, &tdata) == PJ_SUCCESS
&& tdata) {
ast_sip_session_send_request(session, tdata);