[asterisk-bugs] [Asterisk 0014035]: revision r77858 breaks 'failed'-extension functionality

Asterisk Bug Tracker noreply at bugs.digium.com
Tue Dec 9 02:14:55 CST 2008


The following issue has been SUBMITTED. 
====================================================================== 
http://bugs.digium.com/view.php?id=14035 
====================================================================== 
Reported By:                erogoza
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   14035
Category:                   Core/PBX
Reproducibility:            always
Severity:                   minor
Priority:                   normal
Status:                     new
Asterisk Version:           SVN 
SVN Branch (only for SVN checkouts, not tarball releases): N/A 
SVN Revision (number only!): 77858 
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             2008-12-09 02:14 CST
Last Modified:              2008-12-09 02:14 CST
====================================================================== 
Summary:                    revision r77858 breaks 'failed'-extension
functionality
Description: 
The function 'ast_pbx_outgoing_exten()' in pbx.c offers a possibility for 
creating a fake channel "OutgoingSpoolFailed" and running the PBX on the 
extension "failed" on it. However, only the first priority of this
extension in the dialplan gets executed, then 
this fake channel gets hung up. The reason for this is the 
'ast_check_hangup()' instead of 'c->_softhangup' in 'ast_pbx_run()'.

'ast_check_hangup()' additionally checks for the presense of
'chan->tech_pvt', 
and because fake channels do not have any PVT structures associated, the
value 
of that field is NULL, which then returns 1 as a function result, which
causes 
the exit from the main loop on priorities in 'ast_pbx_run()'.

Dummy PVTs for fake channels don't seem to be the best solution as the 
following piece of code in 'ast_channel_free()' would then be executed:

if (chan->tech_pvt) {
        ast_log(LOG_WARNING, "Channel '%s' may not have been hung
up properly\n", 
chan->name);
        ast_free(chan->tech_pvt);
}

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

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2008-12-09 02:14 erogoza        New Issue                                    
2008-12-09 02:14 erogoza        Asterisk Version          => SVN             
2008-12-09 02:14 erogoza        SVN Branch (only for SVN checkouts, not tarball
releases) => N/A             
2008-12-09 02:14 erogoza        SVN Revision (number only!) => 77858           
======================================================================




More information about the asterisk-bugs mailing list