[asterisk-bugs] [Asterisk 0010289]: Old LAGRQ frames showing up in new IAX2 calls

noreply at bugs.digium.com noreply at bugs.digium.com
Wed Aug 1 14:56:59 CDT 2007


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=10289 
====================================================================== 
Reported By:                mihai
Assigned To:                russell
====================================================================== 
Project:                    Asterisk
Issue ID:                   10289
Category:                   Channels/chan_iax2
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     assigned
Asterisk Version:           1.4.8  
SVN Branch (only for SVN checkouts, not tarball releases): N/A  
SVN Revision (number only!):  
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             07-24-2007 10:52 CDT
Last Modified:              08-01-2007 14:56 CDT
====================================================================== 
Summary:                    Old LAGRQ frames showing up in new IAX2 calls
Description: 
If there are two successive IAX2 calls having the same source and
destination call id, sometimes old LAGRQ frames belonging to the first call
are transmitted as part of a VNAK retransmission during the second call.
Since the old LAGRQ have wildly out of order sequence numbers, the other
endpoint will request retransmission, which can cause a VNAK storm.
I am able to reproduce this by stress testing chan_iax2 with an automated
script that generates about 3 calls per second, up to about 200
simultaneous calls.  This will pretty much guarantee that source ids will
be recycled on the server side, which can trigger this issue. 
====================================================================== 

---------------------------------------------------------------------- 
 mihai - 08-01-07 14:56  
---------------------------------------------------------------------- 
There is a second thread condition in iax2_process_thread that could,
potentially, trigger the same problem:

When a dynamic thread times out, it will unlock its mutex and then remove
itself from the dynamic thread list.  If, between these two operations, the
thread is picked up by find_idle_thread and returned to schedule_action,
the action never gets executed.

One possible way of solving this would be to check the return value of
AST_LIST_REMOVE, and if it is NULL, execute the action anyways... dunno if
it is the best solution though... 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
08-01-07 14:56  mihai          Note Added: 0068242                          
======================================================================




More information about the asterisk-bugs mailing list