[asterisk-bugs] [Asterisk 0017005]: [patch] Asterisk sends session-timer with "require" after 15 minutes

Asterisk Bug Tracker noreply at bugs.digium.com
Wed Sep 8 16:48:40 CDT 2010


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=17005 
====================================================================== 
Reported By:                alexrecarey
Assigned To:                dvossel
====================================================================== 
Project:                    Asterisk
Issue ID:                   17005
Category:                   Channels/chan_sip/Interoperability
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     closed
Target Version:             1.6.2.13
Asterisk Version:           SVN 
JIRA:                       SWP-1067 
Regression:                 No 
Reviewboard Link:           https://reviewboard.asterisk.org/r/698/ 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
Resolution:                 fixed
Fixed in Version:           
====================================================================== 
Date Submitted:             2010-03-10 21:02 CST
Last Modified:              2010-09-08 16:48 CDT
====================================================================== 
Summary:                    [patch] Asterisk sends session-timer with "require"
after 15 minutes
Description: 
When asterisk is set to defaults in session timer handling, after 15
minutes it will send a re-invite with the "required" tag.

This will cause an asterisk server with session-timers=refuse setting to
respond with a sip 420 and disconnect the call.

According to developer documentation at
https://issues.asterisk.org/file_download.php?file_id=15454&type=bug
asterisk should NEVER send a session timer with the "require" tag even if
set to session-timers=force

This issue is easily reproduced by registering a sip client with one
asterisk, set to session-timers=refuse, and place a call to another
asterisk with default session-timers settings. After exactly 15 minutes the
call will drop.

I have included a SIP Trace of the last 30 seconds of the call.
====================================================================== 

---------------------------------------------------------------------- 
 (0126759) svnbot (reporter) - 2010-09-08 16:48
 https://issues.asterisk.org/view.php?id=17005#c126759 
---------------------------------------------------------------------- 
Repository: asterisk
Revision: 285564

_U  branches/1.8/
U   branches/1.8/channels/chan_sip.c

------------------------------------------------------------------------
r285564 | dvossel | 2010-09-08 16:48:38 -0500 (Wed, 08 Sep 2010) | 60
lines

Merged revisions 285563 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.6.2

........
  r285563 | dvossel | 2010-09-08 16:47:29 -0500 (Wed, 08 Sep 2010) | 54
lines
  
  Fixes interoperability problems with session timer behavior in Asterisk.
  
  CHANGES:
  1. Never put "timer" in "Require" header.  This is not to our benefit
  and RFC 4028 section 7.1 even warns against it.  It is possible for one
  endpoint to perform session-timer refreshes while the other endpoint
does
  not support them.  If in this case the end point performing the
refreshing
  puts "timer" in the Require field during a refresh, the dialog will
  likely get terminated by the other end.
  
  2. Change the behavior of 'session-timer=accept' in sip.conf (which is
  the default behavior of Asterisk with no session timer configuration
  specified) to only run session-timers as result of an incoming INVITE
  request if the INVITE contains an "Session-Expires" header... Asterisk
is
  currently treating having the "timer" option in the "Supported" header
as
  a request for session timers by the UAC.  I do not agree with this. 
Session
  timers should only be negotiated in "accept" mode when the incoming
INVITE
  supplies a "Session-Expires" header, otherwise RFC 4028 says we should
  treat a request containing no "Session-Expires" header as a session with
  no expiration.
  
  Below I have outlined some situations and what Asterisk's behavior is.
  The table reflects the behavior changes implemented by this patch.
  
  SITUATIONS:
  -Asterisk as UAS
  1. Incoming INVITE: NO  "Session-Expires"
  2. Incoming INVITE: HAS "Session-Expires"
  
  -Asterisk as UAC
  3. Outgoing INVITE: NO  "Session-Expires". 200 Ok Response HAS
"Session-Expires" header
  4. Outgoing INVITE: NO  "Session-Expires". 200 Ok Response NO 
"Session-Expires" header
  5. Outgoing INVITE: HAS "Session-Expires".
  
  Active   - Asterisk will have an active refresh timer regardless if the
other endpoint does.
  Inactive - Asterisk does not have an active refresh timer regardless if
the other endpoint does.
  XXXXXXX  - Not possible for mode.
  ______________________________________
  |SITUATIONS | 'session-timer' MODES  |
  |___________|________________________|
  |           | originate  |  accept   |
  |-----------|------------|-----------|
  |1.         |   Active   | Inactive  |
  |2.         |   Active   |  Active   |
  |3.         | XXXXXXXX   | Active    |
  |4.         | XXXXXXXX   | Inactive  |
  |5.         |   Active   | XXXXXXXX  |
  --------------------------------------
  
  
  (closes issue https://issues.asterisk.org/view.php?id=17005)
  Reported by: alexrecarey
........

------------------------------------------------------------------------

http://svn.digium.com/view/asterisk?view=rev&revision=285564 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2010-09-08 16:48 svnbot         Checkin                                      
2010-09-08 16:48 svnbot         Note Added: 0126759                          
======================================================================




More information about the asterisk-bugs mailing list