On Sat, Nov 28, 2015 at 7:14 AM, Ethy H. Brito <ethy.br...@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@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@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. 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. Matt -- Matthew Jordan Digium, Inc. | Director of Technology 445 Jan Davis Drive NW - Huntsville, AL 35806 - USA Check us out at: http://digium.com & http://asterisk.org
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- New to Asterisk? Join us for a live introductory webinar every Thurs: http://www.asterisk.org/hello asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users