[asterisk-dev] [Code Review] SIP: session timer behavior in Asterisk

David Vossel dvossel at digium.com
Thu Aug 26 14:06:26 CDT 2010


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/879/
-----------------------------------------------------------

Review request for Asterisk Developers.


Summary
-------

This is a simple patch.  This review is more to verify my expectations of how Session Timers are supposed to work are sane.

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 I would Asterisk's behavior to be.  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  |
--------------------------------------


This addresses bug 17005.
    https://issues.asterisk.org/view.php?id=17005


Diffs
-----

  /branches/1.8/channels/chan_sip.c 283768 

Diff: https://reviewboard.asterisk.org/r/879/diff


Testing
-------


Thanks,

David




More information about the asterisk-dev mailing list