[asterisk-bugs] [JIRA] (ASTERISK-22551) Session timer : UAS (Asterisk) starts counting at Invite, UAC starts counting at 200 OK.

Walter Doekes (JIRA) noreply at issues.asterisk.org
Wed May 21 07:22:43 CDT 2014


    [ https://issues.asterisk.org/jira/browse/ASTERISK-22551?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=218339#comment-218339 ] 

Walter Doekes commented on ASTERISK-22551:
------------------------------------------

Just noticed the same issue. To reproduce:

{noformat}
; The session expiration is the time of transmission of
; the last 2xx response to a session refresh request on that dialog
; plus the session interval.
; [...]
; It is RECOMMENDED that this refresh be sent once
; half the session interval has elapsed.
exten => wait_a_while,1,Ringing()
 ;; time is now 00:00
 same => n,Wait(30)
 ;; time is now 00:30
 same => n,Answer()
 ;; if time is 00:30 + 90/2, it's refresh time: 01:15
 ;; however, asterisk thinks it's disconnect time
 ;; at: 00:00 + 90 - min(90/3, 32) = 00:58
 same => n,Wait(65)
 ;; time is now 01:35 and we should have done one refresh
 same => n,Hangup()
{noformat}

And use the attached {{invite-and-refresh-and-bye.xml}}

> Session timer : UAS (Asterisk) starts counting at Invite, UAC starts counting at 200 OK.
> ----------------------------------------------------------------------------------------
>
>                 Key: ASTERISK-22551
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-22551
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Channels/chan_sip/General
>    Affects Versions: 1.8.23.0, 1.8.23.1
>            Reporter: i2045
>         Attachments: ASTERISK-22551_Asterisk_debug.txt, ASTERISK-22551_extensions.conf, ASTERISK-22551_sip.conf, ASTERISK-22551_SIP_signalling.txt, invite-and-refresh-and-bye.xml
>
>
> 10.3.25.10 = SIPp (UAC initiating the call) - A leg
> 10.1.0.19 = Asterisk 1.8.23.1 (UAS)
> 212.79.111.155 = An echo test client to terminate this call - B leg
> - 18:09:41
> An Invite from UAC (SIPp) to UAS (Asterisk 1.8.23.1) with:
>  Session-Expires: 90;refresher=uac.
>  Min-SE: 90.
>  Supported: timer.
> Asterisk now starts counting the session timer:
> [Sep 18 18:09:41] DEBUG[21544]: chan_sip.c:23505 handle_request_invite: Incoming INVITE with 'timer' option supported
> [Sep 18 18:09:41] DEBUG[21544]: chan_sip.c:23514 handle_request_invite: INVITE also has "Session-Expires" header.
> [Sep 18 18:09:41] DEBUG[21544]: chan_sip.c:26871 parse_session_expires: Session-Expires: 90
> [Sep 18 18:09:41] DEBUG[21544]: chan_sip.c:26884 parse_session_expires: Refresher: UAC
> [Sep 18 18:09:41] DEBUG[21544]: chan_sip.c:23531 handle_request_invite: INVITE also has "Min-SE" header.
> [Sep 18 18:09:41] DEBUG[21544]: chan_sip.c:26841 parse_minse: Received Min-SE: 90
> [Sep 18 18:09:41] DEBUG[21544]: chan_sip.c:26755 start_session_timer: Session timer started: 1 - 24 at 10.3.25.10 60000ms
> This means that Asterisk is terminating the session if no refresh was received before: 18:09:41 + (2/3 * 90) = 18:10:41.
> - 18:09:41
> Asterisk responds to the UAC: "100 Trying" followed by "180 Ringing".
> - 18:10:01
> Asterisk responds "200 OK" to the UAC with:
>  Supported: replaces, timer.
>  Session-Expires: 90;refresher=uac.
>  Require: timer.
> The UAC now starts counting the session timer. 
> 20 seconds later than Asterisk.
> This means that the UAC plans to refresh the session at: 18:10:01 + (90 / 2) = 18:10:46. 
> 5 seconds later than Asterisk.
> - 18:10:41
> Asterisk terminates the session as planned, 60 seconds after receiving the initial Invite.
> [Sep 18 18:10:41] DEBUG[21544]: chan_sip.c:26771 proc_session_timer: Session timer expired: 1 - 24 at 10.3.25.10
> [Sep 18 18:10:41] WARNING[21544]: chan_sip.c:26792 proc_session_timer: Session-Timer expired - 24 at 10.3.25.10
> [Sep 18 18:10:41] DEBUG[21544]: channel.c:2735 ast_softhangup_nolock: Soft-Hanging up channel 'SIP/infromclient-00000000'
> [Sep 18 18:10:41] DEBUG[21544]: chan_sip.c:26812 proc_session_timer: Session timer stopped: 1 - 24 at 10.3.25.10
> [Sep 18 18:10:41] DEBUG[21544]: chan_sip.c:26707 stop_session_timer: Session timer stopped: -1 - 24 at 10.3.25.10
> - 18:10:46
> The UAC would send the session refresh at this time (45 seconds after receiving the "200 OK") but the session is already gone so this doesn't happen...
> This issue was not present in Asterisk 1.8.22.0.
> I tested with Asterisk 1.8.23.1 + make samples and modified only sip.conf and extensions.conf, both are attached.
> Also Asterisk debug logging and the SIP signalling is attached.
> Reading RFC4028 i think the UAC is right to start counting the session timer at the time of receiving the "200 OK".
> Is this correct?



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list