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

Asterisk Bug Tracker noreply at bugs.digium.com
Mon May 3 15:33:30 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-03 15:33 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.

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

---------------------------------------------------------------------- 
 (0121308) twilson (administrator) - 2010-05-03 15:33
 https://issues.asterisk.org/view.php?id=17204#c121308 
---------------------------------------------------------------------- 
Personally, I don't like the idea of *ever* fixing CDRs in a release branch
because each change is by definition a change in behavior that may have
unintended side-effects. It's hard to know when someone hasn't already
built workarounds for an issue and then we go and change the behavior in
the middle of the release and break it.

Also, I'm not the CDR guru. :-p 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2010-05-03 15:33 twilson        Note Added: 0121308                          
======================================================================




More information about the asterisk-bugs mailing list