[asterisk-bugs] [Asterisk 0018119]: Reregistration with small (20 sec) Expiry fails

Asterisk Bug Tracker noreply at bugs.digium.com
Wed Oct 13 03:49:19 CDT 2010


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=18119 
====================================================================== 
Reported By:                fabled
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   18119
Category:                   Channels/chan_sip/Registration
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     ready for review
Asterisk Version:           1.6.2.13 
JIRA:                       SWP-2359 
Regression:                 No 
Reviewboard Link:            
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2010-10-12 03:36 CDT
Last Modified:              2010-10-13 03:49 CDT
====================================================================== 
Summary:                    Reregistration with small (20 sec) Expiry fails
Description: 
Apparently the following happens:

1. Asterisk register succesfully, 20s Expiry -> reregister in 15s
   - destruction of sip_pvt scheduled with timeout > 15s
2. When reregister triggers:
   - sip_registry->call is NULL, because of successful registration
   - transmit_register builds new sip_pvt with same call ID as
https://issues.asterisk.org/view.php?id=1
3. Server replies
4. Asterisk rejects registration reply because:
   - the sip_pvt from https://issues.asterisk.org/view.php?id=1 has not been yet
destroyed
   - and asterisk routes the reply to sip_pvt from
https://issues.asterisk.org/view.php?id=1 due to call-id
conflict
   - this is indicated by log messages such as:
[Oct 11 21:34:26] DEBUG[16751] chan_sip.c: Ignoring out of order
response 476 (expecting 475)
   - until we get timer_t1*64 ms later the message
[Oct 11 21:34:42] DEBUG[16751] chan_sip.c: Auto destroying SIP dialog
'768de833447ed7e558ee6dcc44f94821 at ...'
   - immediately after which the registration succeeds again

Olle suggested on mailing list:
I think it clearly has to do with the t1 timer for
https://issues.asterisk.org/view.php?id=1. It propably hangs
around for more than 20 secs. We should set max
T1 for registry transactions to be the expiry time minus some small unit.

And yes, with default global_t1 the timeout would be around 30 seconds.
====================================================================== 

---------------------------------------------------------------------- 
 (0127929) schmidts (manager) - 2010-10-13 03:49
 https://issues.asterisk.org/view.php?id=18119#c127929 
---------------------------------------------------------------------- 
you are right fable i have turned this round so i first check global_t1 and
only if p->t1 is 0 and then check p->t1. thank you for this catch.
look at the new file.

it could not happen that expires_ms will be below 0 only equal cause the
expires header is set in seconds and with 500 ms substracted its the value
for expires_ms. If there would be a expire header with only 1 second
reregister timeout expire_ms would be 500 ms and the value i use for sched
destroy would be 0 and this value is ok cause it would not be replaced with
the T1 timer in this case. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2010-10-13 03:49 schmidts       Note Added: 0127929                          
======================================================================




More information about the asterisk-bugs mailing list