ast_sip_session_send_request_with_cb(session, tdata, cb);
return;
}
- 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);