[asterisk-users] endwhile jumping out of macro

Ethy H. Brito ethy.brito at inexo.com.br
Mon Nov 30 11:34:12 CST 2015


On Mon, 30 Nov 2015 09:40:50 -0600
Matthew Jordan <mjordan at digium.com> wrote:

> On Sat, Nov 28, 2015 at 7:14 AM, Ethy H. Brito <ethy.brito at inexo.com.br>
> wrote:
> 
> >
> > Hi
> >
> > I have a 3 level nested while-endwhile loop in a macro that when the
> > execution reaches endwhile, it is jumping out to the While at the caller
> > macro.
> >
> > It shouldn't since the are instructions after the endwhile.
> >
> >     -- Executing [s at macro-call-from-outside:72]
> > EndWhile("DAHDI/i1/1234567-4a7f", "") in new stack
> >   == Channel 'DAHDI/i1/1234567-4a7f' jumping out of macro
> > 'call-from-outside'
> >     -- Executing [s at macro-recurse_check_redirect_not_mailbox:7]
> >     While("DAHDI/i1/1234567-4a7f", "1") in new stack
> >
> > I checked the while-endwhile balance and it seems ok.
> > I also checked if I GoTo() outside the loop. I don't.
> >
> > Macroexit is executed inside the while-endwhile loop in certain cases
> > exiting some inner loop.
> >
> > Could MacroExiting inside a while loop cause this lost of balance?
> >
> >
> Yes it could. A While loop should be terminated with an EndWhile.

I've already suspected that. 
I did some changes in the code. It is now running smooth.

BTW, is there a "breakwhile" or something like that, that jumps out of a
while-endwhile loop? Just like the "C" break command.

> 
> Both the While application as well as the Macro application attempt to
> control the PBX flow while a channel is executing within them. Terminating
> an outer container of PBX flow without properly terminating an inner one
> can inbalance the stack.
> 
> And just as a reminder, Macros are deprecated. They tend to have odd side
> effects at times, and overly nesting Macros can result in a crash. You
> should consider switching to subroutines.

Can you please point me some good tutorial on converting Macros to subroutines?
Or on subroutines operation themselves?

Regards

Ethy


> 
> Matt
> 



More information about the asterisk-users mailing list