v11: If a channel redirect to a macro exten of a macro that is active
happens, the redirect location doesn't get executed. Instead the original
macro location is restored and gets reexecuted.
v13: An additional effect happens if a parked call times out to an
extension in the macro that parked the call then the macro is reexecuted
instead of the expected park return location.
* Made not restore the macro calling location on an
AST_SOFTHANGUP_ASYNCGOTO.
* Increased the locked channel range when setting up the macro execution
environment to cover things that should be done while the channel is
locked.
* Removed unnecessary NULL tests before calling ast_free() in
_macro_exec().
ASTERISK-23850 #close
Reported by: Andrew Nagy
Review: https://reviewboard.asterisk.org/r/4292/
........
Merged revisions 430564 from http://svn.asterisk.org/svn/asterisk/branches/11
........
Merged revisions 430565 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@430567 65c4cc65-6c06-0410-ace0-fbb531ad65f3
@ -503,7 +504,10 @@ static int _macro_exec(struct ast_channel *chan, const char *data, int exclusive
/* don't stop executing extensions when we're in "h" */
if(ast_check_hangup(chan)&&!inhangup){
ast_debug(1,"Extension %s, macroexten %s, priority %d returned normally even though call was hung up\n",ast_channel_exten(chan),ast_channel_macroexten(chan),ast_channel_priority(chan));
ast_debug(1,"Extension %s, macroexten %s, priority %d returned normally even though call was hung up\n",