From 81afbcca2ca7977bc3d64e0a1338011804e175dc Mon Sep 17 00:00:00 2001
From: Automerge script <automerge@asterisk.org>
Date: Mon, 10 Dec 2012 15:21:05 +0000
Subject: [PATCH] Merged revisions 377626 via svnmerge from
 file:///srv/subversion/repos/asterisk/trunk

................
  r377626 | kmoore | 2012-12-10 08:45:52 -0600 (Mon, 10 Dec 2012) | 20 lines

  Handle Session-Expires less than local Min-SE in 200 OK

  Ensure that a call is immediately torn down if a Session-Expires value
  received in a 200 OK is less than the local Min-SE. This also prevents
  Asterisk from allowing calls with Session-Expires below the
  RFC4028-mandated minimum (90s).

  (closes issue ASTERISK-20653)
  Review: https://reviewboard.asterisk.org/r/2237/
  Patch-by: Kinsey Moore
  ........

  Merged revisions 377623 from http://svn.asterisk.org/svn/asterisk/branches/1.8
  ........

  Merged revisions 377624 from http://svn.asterisk.org/svn/asterisk/branches/10
  ........

  Merged revisions 377625 from http://svn.asterisk.org/svn/asterisk/branches/11
................


git-svn-id: https://origsvn.digium.com/svn/asterisk/team/mmichelson/threadpool@377633 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_sip.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index cabc2d14d6..fa70dc807c 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -22784,6 +22784,9 @@ static void handle_response_invite(struct sip_pvt *p, int resp, const char *rest
 				rtn = parse_session_expires(p_hdrval, &tmp_st_interval, &st_ref_param);
 				if (rtn != 0) {
 					ast_set_flag(&p->flags[0], SIP_PENDINGBYE);	
+				} else if (tmp_st_interval < st_get_se(p, FALSE)) {
+					ast_log(LOG_WARNING, "Got Session-Expires less than local Min-SE in 200 OK, tearing down call\n");
+					ast_set_flag(&p->flags[0], SIP_PENDINGBYE);
 				}
 				if (st_ref_param == SESSION_TIMER_REFRESHER_PARAM_UAC) {
 				   p->stimer->st_ref = SESSION_TIMER_REFRESHER_US;
-- 
GitLab