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

Asterisk Bug Tracker noreply at bugs.digium.com
Wed Dec 10 10:29:17 CST 2008


The following issue has been set as RELATED TO issue 0010230. 
====================================================================== 
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-10 10:29 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);
}

======================================================================
Relationships       ID      Summary
----------------------------------------------------------------------
related to          0010230 [patch] where possible replace uses of ...
====================================================================== 

Issue History 
Date Modified    Username       Field                    Change               
====================================================================== 
2008-12-10 10:29 blitzrage      Relationship added       related to 0010230  
======================================================================




More information about the asterisk-bugs mailing list