[asterisk-bugs] [Asterisk 0017204]: [patch] Dial()'s do_forward() breaks Local/ channel frame forwarding

Asterisk Bug Tracker noreply at bugs.digium.com
Fri May 7 14:05:08 CDT 2010


A NOTE has been added to this issue. 
====================================================================== 
https://issues.asterisk.org/view.php?id=17204 
====================================================================== 
Reported By:                one47
Assigned To:                twilson
====================================================================== 
Project:                    Asterisk
Issue ID:                   17204
Category:                   Applications/app_dial
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     confirmed
Target Version:             1.6.2.9
Asterisk Version:           1.6.2.6 
JIRA:                       SWP-1313 
Regression:                 No 
Reviewboard Link:            
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!):  
Request Review:              
====================================================================== 
Date Submitted:             2010-04-19 12:07 CDT
Last Modified:              2010-05-07 14:05 CDT
====================================================================== 
Summary:                    [patch] Dial()'s do_forward() breaks Local/ channel
frame forwarding
Description: 
This was spotted due to an issue that is caused with CDR records of calls
redirected via a SIP 302 message. The dstchannel is recorded incorrectly.


In chan_local:local_queue_frame(), there is a test to see whether
there is a channel or app to forward data to before frames are passed
on:

               if (other->pbx || other->_bridge ||
!ast_strlen_zero(other->appl)) {
                       ast_queue_frame(other, f);
               }

For a call that is being dialled, there is no pbx or bridge object, so
chan_local will only forward data if 'appl' is correctly set.

In app_dial:do_forward(), the original channel is replaced with a new
"forward" channel, but 'appl' is never set on this channel - The
effectively kills frame passing on the new Local/ channel created by
do_forward, and it stays that way until it is optimized away.

====================================================================== 

---------------------------------------------------------------------- 
 (0121581) twilson (administrator) - 2010-05-07 14:05
 https://issues.asterisk.org/view.php?id=17204#c121581 
---------------------------------------------------------------------- 
Turns out, tilghman fixed this 3 months ago by changing the code to just
"if (other)". Please check out 1.6.2 from svn and test to make sure that
the problem is indeed gone. 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2010-05-07 14:05 twilson        Note Added: 0121581                          
======================================================================




More information about the asterisk-bugs mailing list