[asterisk-commits] russell: trunk r107159 - in /trunk: ./ main/pbx.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Mon Mar 10 15:05:13 CDT 2008
Author: russell
Date: Mon Mar 10 15:05:12 2008
New Revision: 107159
URL: http://svn.digium.com/view/asterisk?view=rev&rev=107159
Log:
Merged revisions 107158 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r107158 | russell | 2008-03-10 15:04:27 -0500 (Mon, 10 Mar 2008) | 9 lines
Fix some bugs related to originating calls. If the code failed to start a PBX
on the channel (such as if you set a call limit based on the system's load
average), then there were cases where a channel that has already been free'd
using ast_hangup() got accessed. This caused weird memory corruption and
crashes to occur.
(fixes issue BE-386)
(much debugging credit goes to twilson, final patch written by me)
........
Modified:
trunk/ (props changed)
trunk/main/pbx.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/main/pbx.c
URL: http://svn.digium.com/view/asterisk/trunk/main/pbx.c?view=diff&rev=107159&r1=107158&r2=107159
==============================================================================
--- trunk/main/pbx.c (original)
+++ trunk/main/pbx.c Mon Mar 10 15:05:12 2008
@@ -6534,6 +6534,7 @@
if (channel)
*channel = NULL;
ast_hangup(chan);
+ chan = NULL;
res = -1;
}
} else {
@@ -6544,6 +6545,7 @@
ast_channel_unlock(chan);
}
ast_hangup(chan);
+ chan = NULL;
res = -1;
}
}
@@ -6562,6 +6564,7 @@
ast_channel_unlock(chan);
}
ast_hangup(chan);
+ chan = NULL;
}
}
@@ -6589,7 +6592,11 @@
pbx_builtin_setvar_helper(chan, "REASON", failed_reason);
if (account)
ast_cdr_setaccount(chan, account);
- ast_pbx_run(chan);
+ if (ast_pbx_run(chan)) {
+ ast_log(LOG_ERROR, "Unable to run PBX on %s\n", chan->name);
+ ast_hangup(chan);
+ }
+ chan = NULL;
}
}
}
More information about the asterisk-commits
mailing list