Merged revisions 163171 via svnmerge from

https://origsvn.digium.com/svn/asterisk/trunk

........
r163171 | russell | 2008-12-11 14:07:47 -0600 (Thu, 11 Dec 2008) | 16 lines

Fix the "failed" extension for outgoing calls.  

The conversion to use ast_check_hangup() everywhere instead of checking the softhangup
flag directly introduced this problem.  The issue is that ast_check_hangup() checked
for tech_pvt to be NULL.  Unfortunately, this will be NULL is some valid circumstances,
such as with a dummy channel.

The fix is simple.  Don't check tech_pvt.  It's pointless, because the code path that
sets this to NULL is when the channel hangup callback gets called.  This happens inside
of ast_hangup(), which is the same function responsible for freeing the channel.  Any
code calling ast_check_hangup() better not be calling it after that point, and if so,
we have a bigger problem at hand.

(closes issue #14035)
Reported by: erogoza

........


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@163172 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2008-12-11 20:09:10 +00:00
parent 09a6317035
commit 668ac35844

View File

@@ -465,8 +465,6 @@ int ast_check_hangup(struct ast_channel *chan)
{
if (chan->_softhangup) /* yes if soft hangup flag set */
return 1;
if (!chan->tech_pvt) /* yes if no technology private data */
return 1;
if (!chan->whentohangup) /* no if no hangup scheduled */
return 0;
if (chan->whentohangup > time(NULL)) /* no if hangup time has not come yet. */