mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	This commits the changes to AEL to use the gosub-with-args from Tilghman to perform macro calls. This results in substantially smaller stack footprint, which allows macro call depths in excess of 100,000 levels, rather than the limit of 7 calls deep, which the Macro app is subject to.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@43747 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										8
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								CHANGES
									
									
									
									
									
								
							@@ -5,3 +5,11 @@ Changes since Asterisk 1.4-beta was branched:
 | 
			
		||||
  * Ability to set process limits without restarting Asterisk
 | 
			
		||||
  * SS7 support in chan_zap (via libss7 library)
 | 
			
		||||
  * Proper codec support in chan_skinny.
 | 
			
		||||
  * AEL upgraded to use the Gosub with Arguments instead
 | 
			
		||||
     of Macro application, to hopefully reduce the problems
 | 
			
		||||
     seen with the artificially low stack ceiling that 
 | 
			
		||||
     Macro bumps into. Macros can only call other Macros
 | 
			
		||||
     to a depth of 7. Tests run using gosub, show depths
 | 
			
		||||
     limited only by virtual memory. A small test demonstrated
 | 
			
		||||
     recursive call depths of 100,000 without problems.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -53,4 +53,5 @@ ptr1: // <-- duplicate label (macros are about the equiv of an extension)
 | 
			
		||||
         Noop(esac) ;
 | 
			
		||||
	  }
 | 
			
		||||
   }
 | 
			
		||||
	return;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -14,6 +14,7 @@ globals
 | 
			
		||||
macro std-exten( ext , dev ) 
 | 
			
		||||
{
 | 
			
		||||
        Dial(${dev}/${ext},20);
 | 
			
		||||
	goto privacyManagerFailed|s|begin;
 | 
			
		||||
        switch(${DIALSTATUS}) 
 | 
			
		||||
		{
 | 
			
		||||
        case BUSY:
 | 
			
		||||
 
 | 
			
		||||
@@ -10,7 +10,7 @@ context hd-queue {
 | 
			
		||||
 | 
			
		||||
	0 => goto default|0|1;
 | 
			
		||||
	1 => {
 | 
			
		||||
		Dial(u41950@svm1.shsu.edu);
 | 
			
		||||
		Dial(u41950@ixtlchochitl.zvbwu.edu);
 | 
			
		||||
		Congestion(10);
 | 
			
		||||
		Hangup;
 | 
			
		||||
	};
 | 
			
		||||
@@ -116,12 +116,13 @@ context huntsville-calling {
 | 
			
		||||
macro dialout( number ) {
 | 
			
		||||
	Realtime(call_info,exten,${CALLERIDNUM:5},mon_);
 | 
			
		||||
	if ("${mon_monitor}" = "YES") {
 | 
			
		||||
		Dial(SIP/${number}@sgw1.shsu.edu,,wW);
 | 
			
		||||
		Dial(SIP/${number}@sgw2.shsu.edu,,wW);
 | 
			
		||||
		Dial(SIP/${number}@zgw1.zvbwu.edu,,wW);
 | 
			
		||||
		Dial(SIP/${number}@zgw2.zvbwu.edu,,wW);
 | 
			
		||||
	} else {
 | 
			
		||||
		Dial(SIP/${number}@sgw1.shsu.edu);
 | 
			
		||||
		Dial(SIP/${number}@sgw2.shsu.edu);
 | 
			
		||||
		Dial(SIP/${number}@zgw1.zvbwu.edu);
 | 
			
		||||
		Dial(SIP/${number}@zgw2.zvbwu.edu);
 | 
			
		||||
	};
 | 
			
		||||
	return;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// Standard extension macro:
 | 
			
		||||
@@ -151,7 +152,7 @@ macro stdexten( ext ) {
 | 
			
		||||
			&checkcfb(${ext});
 | 
			
		||||
			break;
 | 
			
		||||
		case "CHANUNAVAIL":
 | 
			
		||||
			Dial(IAX2/asterisk:password@scm2.shsu.edu/${info_forwardto},25,wW);
 | 
			
		||||
			Dial(IAX2/asterisk:password@ixtlchochitl.zvbwu.edu/${info_forwardto},25,wW);
 | 
			
		||||
			MailboxExists(${ext});
 | 
			
		||||
//			if ("${VMBOXEXISTSSTATUS}" = "FAILED") {
 | 
			
		||||
//				Congestion(10);
 | 
			
		||||
@@ -182,7 +183,7 @@ macro stdexten( ext ) {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
macro uvm( ext ) {
 | 
			
		||||
	Dial(SIP/u${ext}@svm1.shsu.edu);
 | 
			
		||||
	Dial(SIP/u${ext}@ixtlchochitl.zvbwu.edu);
 | 
			
		||||
	Playback(im-sorry);
 | 
			
		||||
	Playback(voice-mail-system);
 | 
			
		||||
	Playback(down);
 | 
			
		||||
@@ -191,7 +192,7 @@ macro uvm( ext ) {
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
macro bvm( ext ) {
 | 
			
		||||
	Dial(SIP/b${ext}@svm1.shsu.edu);
 | 
			
		||||
	Dial(SIP/b${ext}@ixtlchochitl.zvbwu.edu);
 | 
			
		||||
	Playback(im-sorry);
 | 
			
		||||
	Playback(voice-mail-system);
 | 
			
		||||
	Playback(down);
 | 
			
		||||
@@ -204,6 +205,7 @@ macro checkdnd( ext ) {
 | 
			
		||||
		NoOp(Do Not Disturb is not active);
 | 
			
		||||
	} else
 | 
			
		||||
		&uvm(${ext});
 | 
			
		||||
	return;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
macro checkcf( ext ) {
 | 
			
		||||
@@ -213,6 +215,7 @@ macro checkcf( ext ) {
 | 
			
		||||
		} else {
 | 
			
		||||
			Set(info_forwardto=${ext}&SIP/${ext}w);
 | 
			
		||||
		};
 | 
			
		||||
	return;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
macro checkcfb( ext ) {
 | 
			
		||||
@@ -227,6 +230,7 @@ macro checkcfb( ext ) {
 | 
			
		||||
		Hangup;
 | 
			
		||||
	};
 | 
			
		||||
	&stdexten(${info_forwardbusy});
 | 
			
		||||
	return;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
///////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
@@ -691,6 +695,7 @@ macro check-psd-exists ( ext ) {
 | 
			
		||||
		System(/usr/local/bin/create_psd.sh ${ext});
 | 
			
		||||
	} else
 | 
			
		||||
		NoOp(PSD set for ${ext});
 | 
			
		||||
	return;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
context app-psd {
 | 
			
		||||
@@ -798,7 +803,7 @@ context vm-include {
 | 
			
		||||
 | 
			
		||||
context vm-direct {
 | 
			
		||||
	s => {
 | 
			
		||||
		Dial(SIP/5555@svm1.shsu.edu,20);
 | 
			
		||||
		Dial(SIP/5555@ixtlchochitl.zvbwu.edu,20);
 | 
			
		||||
		Playback(im-sorry);
 | 
			
		||||
		Playback(voice-mail-system);
 | 
			
		||||
		Playback(down);
 | 
			
		||||
@@ -810,7 +815,7 @@ context vm-direct {
 | 
			
		||||
 | 
			
		||||
context vm-extension {
 | 
			
		||||
	s => {
 | 
			
		||||
		Dial(SIP/62100@svm1.shsu.edu,20);
 | 
			
		||||
		Dial(SIP/62100@ixtlchochitl.zvbwu.edu,20);
 | 
			
		||||
		Playback(im-sorry);
 | 
			
		||||
		Playback(voice-mail-system);
 | 
			
		||||
		Playback(down);
 | 
			
		||||
@@ -822,7 +827,7 @@ context vm-extension {
 | 
			
		||||
 | 
			
		||||
context vm-directory {
 | 
			
		||||
	5556 => {
 | 
			
		||||
		Dial(SIP/5556@svm1.shsu.edu);
 | 
			
		||||
		Dial(SIP/5556@ixtlchochitl.zvbwu.edu);
 | 
			
		||||
		Playback(im-sorry);
 | 
			
		||||
		Playback(voice-mail-system);
 | 
			
		||||
		Playback(down);
 | 
			
		||||
 
 | 
			
		||||
@@ -5,125 +5,138 @@
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
 | 
			
		||||
Executed ast_cli_register_multiple();
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3747 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3754 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3757 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3760 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 | 
			
		||||
Executed ast_context_create(conts, name=macro-endsess, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=macro-nullchk, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=macro-endcall, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=macro-endcall2, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=macro-endcall3, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=macro-endcall4, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=macro-endcall5, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endsess, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=NoOp, data=hithere, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-nullchk, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-nullchk, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=NoOp, data=${type} is this, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-1-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall-1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:6, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-1-out|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=5, label=(null), callerid=(null), appl=Goto, data=8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=6, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall-out-1-2, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=9, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=10, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-3-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall2-3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out2, priority=1, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out2, priority=2, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out2, priority=3, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out2, priority=4, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-3-out2|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall2-out-3-4, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-3-out2|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-5-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-8-out|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall3-7, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-8-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-8-out, priority=1, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?2:4, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-8-out, priority=2, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-8-out, priority=3, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-8-out, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall3-out-8-9, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-8-out, priority=5, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-8-out, priority=6, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-out, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-out, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-8-out|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall3-out-5-6, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-out, priority=6, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-out, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-10-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-10, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-14-in|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall4-12, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-13-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-13, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-13-out, priority=1, label=(null), callerid=(null), appl=Goto, data=sw-14-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-13-out, priority=2, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall4-out-13-14, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-13-out, priority=3, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-in, priority=1, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?2:4, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-in, priority=2, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-in, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-13-out|2, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-in, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall4-out-13-in-14-15, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-in, priority=5, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-in, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-13-out|2, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-out, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-out, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-14-in|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall4-out-10-11, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-out, priority=6, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-out, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-16-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-16, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-21-in|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall5-19, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-20-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-20, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-20-out, priority=1, label=(null), callerid=(null), appl=Goto, data=sw-21-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-20-out, priority=2, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall5-out-20-21, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-20-out, priority=3, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-in, priority=1, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?2:4, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-in, priority=2, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-in, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-20-out|2, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-in, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall5-out-20-in-21-22, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-in, priority=5, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-in, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-20-out|2, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-in, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-in, priority=2, label=ptr2, callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-in, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-in, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-21-in|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-in, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall5-in-16-18, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-in, priority=6, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-in, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-out, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-out, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-21-in|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall5-out-16-17, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-out, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-16-in|1, FREE, registrar=pbx_ael);
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3762 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3850 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3857 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3860 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 1-4: The macro endsess does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 6-9: The macro nullchk does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 28-44: The macro endcall2 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 46-68: The macro endcall3 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 70-96: The macro endcall4 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 98-131: The macro endcall5 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3863 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 | 
			
		||||
Executed ast_context_create(conts, name=endsess, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=nullchk, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=endcall, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=endcall2, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=endcall3, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=endcall4, registrar=pbx_ael);
 | 
			
		||||
Executed ast_context_create(conts, name=endcall5, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endsess, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=NoOp, data=hithere, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endsess, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=nullchk, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=nullchk, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=NoOp, data=${type} is this, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=nullchk, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-1-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall-1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=1, label=(null), callerid=(null), appl=Gosub, data=nullchk|s|1:callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:6, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=3, label=(null), callerid=(null), appl=Gosub, data=endsess|s|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-1-out|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=5, label=(null), callerid=(null), appl=Goto, data=8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=6, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall-out-1-2, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=9, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=10, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-3-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall2-3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=1, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=2, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=3, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out2, priority=4, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=1, label=(null), callerid=(null), appl=Gosub, data=nullchk|s|1:callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=3, label=(null), callerid=(null), appl=Gosub, data=endsess|s|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-3-out2|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall2-out-3-4, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall2, rep=0, exten=sw-3-out, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-3-out2|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-5-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-8-out|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall3-7, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-8-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=1, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?2:4, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=2, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=3, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall3-out-8-9, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=5, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=6, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=1, label=(null), callerid=(null), appl=Gosub, data=nullchk|s|1:callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=3, label=(null), callerid=(null), appl=Gosub, data=endsess|s|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-8-out|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall3-out-5-6, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=6, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-10-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-10, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-14-in|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall4-12, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-13-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-13, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=1, label=(null), callerid=(null), appl=Goto, data=sw-14-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=2, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall4-out-13-14, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-13-out, priority=3, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=1, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?2:4, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=2, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-13-out|2, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall4-out-13-in-14-15, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=5, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-13-out|2, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=1, label=(null), callerid=(null), appl=Gosub, data=nullchk|s|1:callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=3, label=(null), callerid=(null), appl=Gosub, data=endsess|s|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-14-in|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall4-out-10-11, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=6, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-16-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-16, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-21-in|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall5-19, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-20-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-20, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=9, label=(null), callerid=(null), appl=Return, data=, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=1, label=(null), callerid=(null), appl=Goto, data=sw-21-${type}|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=2, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall5-out-20-21, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-20-out, priority=3, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=1, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?2:4, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=2, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-20-out|2, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall5-out-20-in-21-22, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=5, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-20-out|2, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=1, label=(null), callerid=(null), appl=Gosub, data=nullchk|s|1:callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=2, label=ptr2, callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=3, label=(null), callerid=(null), appl=Gosub, data=endsess|s|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-21-in|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall5-in-16-18, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=6, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=1, label=(null), callerid=(null), appl=Gosub, data=nullchk|s|1:callid, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=3, label=(null), callerid=(null), appl=Gosub, data=endsess|s|1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-21-in|ptr1, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall5-out-16-17, FREE, registrar=pbx_ael);
 | 
			
		||||
Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-16-in|1, FREE, registrar=pbx_ael);
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3865 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 | 
			
		||||
Executed ast_merge_contexts_and_delete();
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3765 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3868 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 | 
			
		||||
Executed ast_walk_contexts();
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3768 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:458 func: main  7 contexts, 17 extensions, 104 priorities
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3871 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:479 func: main  7 contexts, 17 extensions, 111 priorities
 | 
			
		||||
 
 | 
			
		||||
@@ -2,13 +2,17 @@
 | 
			
		||||
(If you find progress and other non-error messages irritating, you can use -q to suppress them)
 | 
			
		||||
 | 
			
		||||
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3747 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3754 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3757 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:899 func: check_dow  Warning: file ./extensions.ael, line 67-67: The day (m0n) must be one of 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', or 'sat'!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:857 func: check_timerange  Warning: file ./extensions.ael, line 78-78: The end time (25:00) is out of range!
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3760 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3762 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3765 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3768 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:458 func: main  5 contexts, 13 extensions, 156 priorities
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3904 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3911 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3914 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 2-16: The macro testdial does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 18-25: The macro exten-gen does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:1349 func: check_goto  Warning: file ./extensions.ael, line 21-21: It's bad form to have a goto in a macro to a target outside the macro!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:1349 func: check_goto  Warning: file ./extensions.ael, line 23-23: It's bad form to have a goto in a macro to a target outside the macro!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:943 func: check_dow  Warning: file ./extensions.ael, line 67-67: The day (m0n) must be one of 'sun', 'mon', 'tue', 'wed', 'thu', 'fri', or 'sat'!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:901 func: check_timerange  Warning: file ./extensions.ael, line 78-78: The end time (25:00) is out of range!
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3917 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3919 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3922 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3925 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:479 func: main  5 contexts, 13 extensions, 154 priorities
 | 
			
		||||
 
 | 
			
		||||
@@ -2,17 +2,25 @@
 | 
			
		||||
(If you find progress and other non-error messages irritating, you can use -q to suppress them)
 | 
			
		||||
 | 
			
		||||
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3747 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3754 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./apptest.ael2, 3474 chars
 | 
			
		||||
LOG: lev:3 file:ael.y  line:512 func: ael_yyparse  ==== File: ./apptest.ael2, Line 46, Cols: 8-11: Suggestion: Use the goto statement instead of the Goto() application call in AEL.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3757 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 35-35: application call to EndWhile needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 37-37: application call to ExecIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:1197 func: check_goto  Error: file ./apptest.ael2, line 46-46: goto:  no context cont could be found that matches the goto target!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 47-47: application call to GotoIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 85-85: application call to Random needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 141-141: application call to While needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:3770 func: pbx_load_module  Sorry, but 0 syntax errors and 1 semantic errors were detected. It doesn't make sense to compile.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:458 func: main  0 contexts, 0 extensions, 0 priorities
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3856 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3863 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./apptest.ael2, 3474 chars
 | 
			
		||||
LOG: lev:3 file:ael.y  line:523 func: ael_yyparse  ==== File: ./apptest.ael2, Line 46, Cols: 8-11: Suggestion: Use the goto statement instead of the Goto() application call in AEL.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3866 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 35-35: application call to EndWhile affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 37-37: application call to ExecIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 38-38: application call to ExecIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 44-44: application call to Gosub affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 45-45: application call to GosubIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:1302 func: check_goto  Error: file ./apptest.ael2, line 46-46: goto:  no context cont could be found that matches the goto target!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 47-47: application call to GotoIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 58-58: application call to Macro affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2373 func: check_pval_item  Warning: file ./apptest.ael2, line 59-59: I am converting the MacroExit call here to a return statement.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 60-60: application call to MacroIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 85-85: application call to Random affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 94-94: application call to Return affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 119-119: application call to StackPop affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 141-141: application call to While affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:3879 func: pbx_load_module  Sorry, but 0 syntax errors and 1 semantic errors were detected. It doesn't make sense to compile.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:479 func: main  0 contexts, 0 extensions, 0 priorities
 | 
			
		||||
 
 | 
			
		||||
@@ -2,17 +2,99 @@
 | 
			
		||||
(If you find progress and other non-error messages irritating, you can use -q to suppress them)
 | 
			
		||||
 | 
			
		||||
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3797 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3804 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:431 func: ael_yylex    --Read in included file ./include1.ael2, 78 chars
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:431 func: ael_yylex    --Read in included file ./include2.ael2, 98 chars
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:431 func: ael_yylex    --Read in included file ./include3.ael2, 57 chars
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:431 func: ael_yylex    --Read in included file ./include5.ael2, 56 chars
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:431 func: ael_yylex    --Read in included file ./include4.ael2, 87 chars
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:431 func: ael_yylex    --Read in included file ./telemarket_torture.ael2, 28036 chars
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3807 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3810 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3812 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3815 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3818 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:479 func: main  172 contexts, 858 extensions, 2326 priorities
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3904 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3911 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./include1.ael2, 78 chars
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./include2.ael2, 98 chars
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./include3.ael2, 57 chars
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./include5.ael2, 56 chars
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./include4.ael2, 87 chars
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./telemarket_torture.ael2, 28036 chars
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3914 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 14-34: The macro std-exten does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:1349 func: check_goto  Warning: file ./extensions.ael, line 17-17: It's bad form to have a goto in a macro to a target outside the macro!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 36-59: The macro std-priv-exten_1 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 62-85: The macro std-priv-exten_2 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 88-111: The macro std-priv-exten_3 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 114-137: The macro std-priv-exten_4 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 140-163: The macro std-priv-exten_5 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 166-189: The macro std-priv-exten_6 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 192-215: The macro std-priv-exten_7 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 218-241: The macro std-priv-exten_8 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 244-267: The macro std-priv-exten_9 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 270-293: The macro std-priv-exten_10 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 296-319: The macro std-priv-exten_11 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 322-345: The macro std-priv-exten_12 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 348-371: The macro std-priv-exten_13 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 374-397: The macro std-priv-exten_14 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 400-423: The macro std-priv-exten_15 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 426-449: The macro std-priv-exten_16 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 452-475: The macro std-priv-exten_17 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 478-501: The macro std-priv-exten_18 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 504-527: The macro std-priv-exten_19 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 530-553: The macro std-priv-exten_20 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 556-579: The macro std-priv-exten_21 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 582-605: The macro std-priv-exten_22 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 608-631: The macro std-priv-exten_23 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 634-657: The macro std-priv-exten_24 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 660-683: The macro std-priv-exten_25 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 686-709: The macro std-priv-exten_26 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 712-735: The macro std-priv-exten_27 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 738-761: The macro std-priv-exten_28 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 764-787: The macro std-priv-exten_29 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 790-813: The macro std-priv-exten_30 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 816-839: The macro std-priv-exten_31 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 842-865: The macro std-priv-exten_32 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 868-891: The macro std-priv-exten_33 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 894-917: The macro std-priv-exten_34 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 920-943: The macro std-priv-exten_35 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 946-969: The macro std-priv-exten_36 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 972-995: The macro std-priv-exten_37 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 998-1021: The macro std-priv-exten_38 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1024-1047: The macro std-priv-exten_39 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1050-1073: The macro std-priv-exten_40 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1076-1099: The macro std-priv-exten_41 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1102-1125: The macro std-priv-exten_42 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1128-1151: The macro std-priv-exten_43 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1154-1177: The macro std-priv-exten_44 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1180-1203: The macro std-priv-exten_45 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1206-1229: The macro std-priv-exten_46 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1232-1255: The macro std-priv-exten_47 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1258-1281: The macro std-priv-exten_48 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1284-1307: The macro std-priv-exten_49 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1310-1333: The macro std-priv-exten_50 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1336-1359: The macro std-priv-exten_51 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1362-1385: The macro std-priv-exten_52 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1388-1411: The macro std-priv-exten_53 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1414-1437: The macro std-priv-exten_54 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1440-1463: The macro std-priv-exten_55 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1466-1489: The macro std-priv-exten_56 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1492-1515: The macro std-priv-exten_57 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1518-1541: The macro std-priv-exten_58 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1544-1567: The macro std-priv-exten_59 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1570-1593: The macro std-priv-exten_60 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1596-1619: The macro std-priv-exten_61 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1622-1645: The macro std-priv-exten_62 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1648-1671: The macro std-priv-exten_63 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1674-1697: The macro std-priv-exten_64 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1700-1723: The macro std-priv-exten_65 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1726-1749: The macro std-priv-exten_66 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1752-1775: The macro std-priv-exten_67 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1778-1801: The macro std-priv-exten_68 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1804-1827: The macro std-priv-exten_69 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1830-1853: The macro std-priv-exten_70 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1856-1879: The macro std-priv-exten_71 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1882-1905: The macro std-priv-exten_72 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1908-1931: The macro std-priv-exten_73 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1934-1957: The macro std-priv-exten does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1959-1995: The macro fillcidname does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 1997-2015: The macro ciddial does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 2017-2028: The macro ciddial3 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 2030-2048: The macro ciddial2 does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 2050-2065: The macro callerid-liar does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:711 func: check_macro_returns  Warning: file ./extensions.ael, line 2067-2072: The macro callerid-bad does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3917 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3919 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3922 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3925 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:479 func: main  172 contexts, 858 extensions, 2406 priorities
 | 
			
		||||
 
 | 
			
		||||
@@ -2,17 +2,25 @@
 | 
			
		||||
(If you find progress and other non-error messages irritating, you can use -q to suppress them)
 | 
			
		||||
 | 
			
		||||
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3747 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3754 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./apptest.ael2, 3474 chars
 | 
			
		||||
LOG: lev:3 file:ael.y  line:512 func: ael_yyparse  ==== File: ./apptest.ael2, Line 46, Cols: 8-11: Suggestion: Use the goto statement instead of the Goto() application call in AEL.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3757 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 35-35: application call to EndWhile needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 37-37: application call to ExecIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:1197 func: check_goto  Error: file ./apptest.ael2, line 46-46: goto:  no context cont could be found that matches the goto target!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 47-47: application call to GotoIf needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 85-85: application call to Random needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2247 func: check_pval_item  Warning: file ./apptest.ael2, line 141-141: application call to While needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:3770 func: pbx_load_module  Sorry, but 0 syntax errors and 1 semantic errors were detected. It doesn't make sense to compile.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:458 func: main  0 contexts, 0 extensions, 0 priorities
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3856 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3863 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:ael.flex  line:429 func: ael_yylex    --Read in included file ./apptest.ael2, 3474 chars
 | 
			
		||||
LOG: lev:3 file:ael.y  line:523 func: ael_yyparse  ==== File: ./apptest.ael2, Line 46, Cols: 8-11: Suggestion: Use the goto statement instead of the Goto() application call in AEL.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3866 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 35-35: application call to EndWhile affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 37-37: application call to ExecIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 38-38: application call to ExecIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 44-44: application call to Gosub affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 45-45: application call to GosubIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:1302 func: check_goto  Error: file ./apptest.ael2, line 46-46: goto:  no context cont could be found that matches the goto target!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 47-47: application call to GotoIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 48-48: application call to GotoIfTime affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 58-58: application call to Macro affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2373 func: check_pval_item  Warning: file ./apptest.ael2, line 59-59: I am converting the MacroExit call here to a return statement.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 60-60: application call to MacroIf affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 85-85: application call to Random affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 94-94: application call to Return affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 119-119: application call to StackPop affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:2368 func: check_pval_item  Warning: file ./apptest.ael2, line 141-141: application call to While affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:3879 func: pbx_load_module  Sorry, but 0 syntax errors and 1 semantic errors were detected. It doesn't make sense to compile.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:479 func: main  0 contexts, 0 extensions, 0 priorities
 | 
			
		||||
 
 | 
			
		||||
@@ -2,11 +2,14 @@
 | 
			
		||||
(If you find progress and other non-error messages irritating, you can use -q to suppress them)
 | 
			
		||||
 | 
			
		||||
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3747 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3754 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3757 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3760 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3762 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3765 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3768 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:458 func: main  38 contexts, 90 extensions, 484 priorities
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3850 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3857 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3860 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 130-183: The macro stdexten does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 185-192: The macro uvm does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 194-201: The macro bvm does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3863 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3865 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3868 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3871 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:479 func: main  38 contexts, 90 extensions, 492 priorities
 | 
			
		||||
 
 | 
			
		||||
@@ -2,15 +2,23 @@
 | 
			
		||||
(If you find progress and other non-error messages irritating, you can use -q to suppress them)
 | 
			
		||||
 | 
			
		||||
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3747 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3754 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:ael.flex  line:269 func: ael_yylex  File=./extensions.ael, line=165, column=49: Mismatched '}' in expression!
 | 
			
		||||
LOG: lev:4 file:ael.y  line:735 func: ael_yyerror  ==== File: ./extensions.ael, Line 165, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
 | 
			
		||||
LOG: lev:4 file:ael.y  line:735 func: ael_yyerror  ==== File: ./extensions.ael, Line 169, Cols: 24-24: Error: syntax error, unexpected '&'
 | 
			
		||||
LOG: lev:4 file:ael.flex  line:269 func: ael_yylex  File=./extensions.ael, line=222, column=41: Mismatched '}' in expression!
 | 
			
		||||
LOG: lev:4 file:ael.y  line:735 func: ael_yyerror  ==== File: ./extensions.ael, Line 222, Cols: 43-43: Error: syntax error, unexpected '=', expecting ')'
 | 
			
		||||
LOG: lev:4 file:ael.y  line:735 func: ael_yyerror  ==== File: ./extensions.ael, Line 226, Cols: 16-16: Error: syntax error, unexpected '&'
 | 
			
		||||
LOG: lev:4 file:ael.y  line:735 func: ael_yyerror  ==== File: ./extensions.ael, Line 291, Cols: 21-28: Error: syntax error, unexpected word, expecting '(' or ';' or '=' or ':'
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3757 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:3770 func: pbx_load_module  Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:458 func: main  0 contexts, 0 extensions, 0 priorities
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3850 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3857 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:ael.flex  line:276 func: ael_yylex  File=./extensions.ael, line=165, column=49: Mismatched '}' in expression!
 | 
			
		||||
LOG: lev:4 file:ael.y  line:746 func: ael_yyerror  ==== File: ./extensions.ael, Line 165, Cols: 51-51: Error: syntax error, unexpected '=', expecting ')'
 | 
			
		||||
LOG: lev:4 file:ael.y  line:746 func: ael_yyerror  ==== File: ./extensions.ael, Line 169, Cols: 24-24: Error: syntax error, unexpected '&'
 | 
			
		||||
LOG: lev:4 file:ael.flex  line:276 func: ael_yylex  File=./extensions.ael, line=222, column=41: Mismatched '}' in expression!
 | 
			
		||||
LOG: lev:4 file:ael.y  line:746 func: ael_yyerror  ==== File: ./extensions.ael, Line 222, Cols: 43-43: Error: syntax error, unexpected '=', expecting ')'
 | 
			
		||||
LOG: lev:4 file:ael.y  line:746 func: ael_yyerror  ==== File: ./extensions.ael, Line 226, Cols: 16-16: Error: syntax error, unexpected '&'
 | 
			
		||||
LOG: lev:4 file:ael.y  line:746 func: ael_yyerror  ==== File: ./extensions.ael, Line 291, Cols: 21-28: Error: syntax error, unexpected word, expecting '(' or ';' or '=' or ':'
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3860 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 116-125: The macro dialout does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 129-168: The macro stdexten does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 184-191: The macro uvm does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 193-200: The macro bvm does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 202-207: The macro checkdnd does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 209-216: The macro checkcf does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 218-225: The macro checkcfb does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 688-694: The macro check-psd-exists does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:3873 func: pbx_load_module  Sorry, but 5 syntax errors and 0 semantic errors were detected. It doesn't make sense to compile.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:479 func: main  0 contexts, 0 extensions, 0 priorities
 | 
			
		||||
 
 | 
			
		||||
@@ -2,13 +2,19 @@
 | 
			
		||||
(If you find progress and other non-error messages irritating, you can use -q to suppress them)
 | 
			
		||||
 | 
			
		||||
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3747 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3754 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3757 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:2221 func: check_pval_item  Error: file ./extensions.ael, line 98-98: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:2221 func: check_pval_item  Error: file ./extensions.ael, line 107-107: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:2221 func: check_pval_item  Error: file ./extensions.ael, line 284-284: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:2221 func: check_pval_item  Error: file ./extensions.ael, line 287-287: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:2202 func: check_pval_item  Error: file ./extensions.ael, line 452-452: macro call to non-existent std-exten-ael !
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:3770 func: pbx_load_module  Sorry, but 0 syntax errors and 5 semantic errors were detected. It doesn't make sense to compile.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:458 func: main  0 contexts, 0 extensions, 0 priorities
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3850 func: pbx_load_module  Starting AEL load process.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3857 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:2 file:../pbx/pbx_ael.c  line:3860 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 22-42: The macro stdexten does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 44-49: The macro announce_minutes does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 59-89: The macro checkanddial does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 91-100: The macro trunkdial does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:2330 func: check_pval_item  Error: file ./extensions.ael, line 98-98: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 102-112: The macro checklocal does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:2330 func: check_pval_item  Error: file ./extensions.ael, line 107-107: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
 | 
			
		||||
LOG: lev:3 file:../pbx/pbx_ael.c  line:712 func: check_macro_returns  Warning: file ./extensions.ael, line 114-119: The macro autodial does not end with a return; I will insert one.
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:2330 func: check_pval_item  Error: file ./extensions.ael, line 284-284: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:2330 func: check_pval_item  Error: file ./extensions.ael, line 287-287: The macro call to checkanddial has 5 arguments, but the macro definition has 7 arguments
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:2311 func: check_pval_item  Error: file ./extensions.ael, line 452-452: macro call to non-existent std-exten-ael !
 | 
			
		||||
LOG: lev:4 file:../pbx/pbx_ael.c  line:3873 func: pbx_load_module  Sorry, but 0 syntax errors and 5 semantic errors were detected. It doesn't make sense to compile.
 | 
			
		||||
LOG: lev:4 file:ael2_parse  line:479 func: main  0 contexts, 0 extensions, 0 priorities
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										234
									
								
								pbx/pbx_ael.c
									
									
									
									
									
								
							
							
						
						
									
										234
									
								
								pbx/pbx_ael.c
									
									
									
									
									
								
							@@ -131,6 +131,10 @@ static int extension_matches(pval *here, const char *exten, const char *pattern)
 | 
			
		||||
static void check_goto(pval *item);
 | 
			
		||||
static void find_pval_goto_item(pval *item, int lev);
 | 
			
		||||
static void find_pval_gotos(pval *item, int lev);
 | 
			
		||||
static int check_break(pval *item);
 | 
			
		||||
static int check_continue(pval *item);
 | 
			
		||||
static void check_label(pval *item);
 | 
			
		||||
static void check_macro_returns(pval *macro);
 | 
			
		||||
 | 
			
		||||
static struct pval *find_label_in_current_context(char *exten, char *label, pval *curr_cont);
 | 
			
		||||
static struct pval *find_first_label_in_current_context(char *label, pval *curr_cont);
 | 
			
		||||
@@ -681,6 +685,49 @@ void traverse_pval_template(pval *item, int depth) /* depth comes in handy for a
 | 
			
		||||
/*   (not all that is syntactically legal is good! */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static void check_macro_returns(pval *macro)
 | 
			
		||||
{
 | 
			
		||||
	pval *i;
 | 
			
		||||
	if (!macro->u3.macro_statements)
 | 
			
		||||
	{
 | 
			
		||||
		pval *z = calloc(1, sizeof(struct pval));
 | 
			
		||||
		ast_log(LOG_WARNING, "Warning: file %s, line %d-%d: The macro %s is empty! I will insert a return.\n",
 | 
			
		||||
				macro->filename, macro->startline, macro->endline, macro->u1.str);
 | 
			
		||||
 | 
			
		||||
		z->type = PV_RETURN;
 | 
			
		||||
		z->startline = macro->startline;
 | 
			
		||||
		z->endline = macro->endline;
 | 
			
		||||
		z->startcol = macro->startcol;
 | 
			
		||||
		z->endcol = macro->endcol;
 | 
			
		||||
		z->filename = strdup(macro->filename);
 | 
			
		||||
 | 
			
		||||
		macro->u3.macro_statements = z;
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	for (i=macro->u3.macro_statements; i; i=i->next) {
 | 
			
		||||
		/* if the last statement in the list is not return, then insert a return there */
 | 
			
		||||
		if (i->next == NULL) {
 | 
			
		||||
			if (i->type != PV_RETURN) {
 | 
			
		||||
				pval *z = calloc(1, sizeof(struct pval));
 | 
			
		||||
				ast_log(LOG_WARNING, "Warning: file %s, line %d-%d: The macro %s does not end with a return; I will insert one.\n",
 | 
			
		||||
						macro->filename, macro->startline, macro->endline, macro->u1.str);
 | 
			
		||||
 | 
			
		||||
				z->type = PV_RETURN;
 | 
			
		||||
				z->startline = macro->startline;
 | 
			
		||||
				z->endline = macro->endline;
 | 
			
		||||
				z->startcol = macro->startcol;
 | 
			
		||||
				z->endcol = macro->endcol;
 | 
			
		||||
				z->filename = strdup(macro->filename);
 | 
			
		||||
 | 
			
		||||
				i->next = z;
 | 
			
		||||
				return;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
static int extension_matches(pval *here, const char *exten, const char *pattern)
 | 
			
		||||
{
 | 
			
		||||
@@ -688,10 +735,10 @@ static int extension_matches(pval *here, const char *exten, const char *pattern)
 | 
			
		||||
	regex_t preg;
 | 
			
		||||
	
 | 
			
		||||
	/* simple case, they match exactly, the pattern and exten name */
 | 
			
		||||
	if( !strcmp(pattern,exten) == 0 )
 | 
			
		||||
	if (!strcmp(pattern,exten) == 0)
 | 
			
		||||
		return 1;
 | 
			
		||||
	
 | 
			
		||||
	if ( pattern[0] == '_' ) {
 | 
			
		||||
	if (pattern[0] == '_') {
 | 
			
		||||
		char reg1[2000];
 | 
			
		||||
		const char *p;
 | 
			
		||||
		char *r = reg1;
 | 
			
		||||
@@ -1048,16 +1095,64 @@ static int check_continue(pval *item)
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct pval *in_macro(pval *item)
 | 
			
		||||
{
 | 
			
		||||
	struct pval *curr;
 | 
			
		||||
	curr = item;	
 | 
			
		||||
	while( curr ) {
 | 
			
		||||
		if( curr->type == PV_MACRO  ) {
 | 
			
		||||
			return curr;
 | 
			
		||||
		}
 | 
			
		||||
		curr = curr->dad;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static struct pval *in_context(pval *item)
 | 
			
		||||
{
 | 
			
		||||
	struct pval *curr;
 | 
			
		||||
	curr = item;	
 | 
			
		||||
	while( curr ) {
 | 
			
		||||
		if( curr->type == PV_MACRO || curr->type == PV_CONTEXT ) {
 | 
			
		||||
			return curr;
 | 
			
		||||
		}
 | 
			
		||||
		curr = curr->dad;
 | 
			
		||||
	}
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/* general purpose goto finder */
 | 
			
		||||
 | 
			
		||||
static void check_label(pval *item)
 | 
			
		||||
{
 | 
			
		||||
	struct pval *curr;
 | 
			
		||||
	struct pval *x;
 | 
			
		||||
	int alright = 0;
 | 
			
		||||
	
 | 
			
		||||
	/* A label outside an extension just plain does not make sense! */
 | 
			
		||||
	
 | 
			
		||||
	curr = item;
 | 
			
		||||
	
 | 
			
		||||
	while( curr ) {
 | 
			
		||||
		if( curr->type == PV_MACRO || curr->type == PV_EXTENSION   ) {
 | 
			
		||||
			alright = 1;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		curr = curr->dad;
 | 
			
		||||
	}
 | 
			
		||||
	if( !alright )
 | 
			
		||||
	{
 | 
			
		||||
		ast_log(LOG_ERROR,"Error: file %s, line %d-%d: Label %s is not within an extension or macro!\n",
 | 
			
		||||
				item->filename, item->startline, item->endline, item->u1.str);
 | 
			
		||||
		errs++;	
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	
 | 
			
		||||
	/* basically, ensure that a label is not repeated in a context. Period.
 | 
			
		||||
	   The method:  well, for each label, find the first label in the context
 | 
			
		||||
	   with the same name. If it's not the current label, then throw an error. */
 | 
			
		||||
	struct pval *curr;
 | 
			
		||||
	struct pval *x;
 | 
			
		||||
 | 
			
		||||
	
 | 
			
		||||
	/* printf("==== check_label:   ====\n"); */
 | 
			
		||||
	if( !current_extension )
 | 
			
		||||
@@ -1231,12 +1326,34 @@ static void check_goto(pval *item)
 | 
			
		||||
						ast_log(LOG_ERROR,"Error: file %s, line %d-%d: goto:  no label %s|%s exists in the context %s or its inclusions!\n",
 | 
			
		||||
								item->filename, item->startline, item->endline, item->u1.list->next->u1.str, item->u1.list->next->next->u1.str, item->u1.list->u1.str );
 | 
			
		||||
						errs++;
 | 
			
		||||
					} else {
 | 
			
		||||
						struct pval *mac = in_macro(item); /* is this goto inside a macro? */
 | 
			
		||||
						if( mac ) {    /* yes! */
 | 
			
		||||
							struct pval *targ = in_context(found);
 | 
			
		||||
							if( mac != targ )
 | 
			
		||||
							{
 | 
			
		||||
								ast_log(LOG_WARNING, "Warning: file %s, line %d-%d: It's bad form to have a goto in a macro to a target outside the macro!\n",
 | 
			
		||||
										item->filename, item->startline, item->endline);
 | 
			
		||||
								warns++;								
 | 
			
		||||
							}
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
					ast_log(LOG_ERROR,"Error: file %s, line %d-%d: goto:  no context %s could be found that matches the goto target!\n",
 | 
			
		||||
							item->filename, item->startline, item->endline, item->u1.list->u1.str);
 | 
			
		||||
					errs++;
 | 
			
		||||
				}
 | 
			
		||||
			} else {
 | 
			
		||||
				struct pval *mac = in_macro(item); /* is this goto inside a macro? */
 | 
			
		||||
				if( mac ) {    /* yes! */
 | 
			
		||||
					struct pval *targ = in_context(x);
 | 
			
		||||
					if( mac != targ )
 | 
			
		||||
					{
 | 
			
		||||
						ast_log(LOG_WARNING, "Warning: file %s, line %d-%d: It's bad form to have a goto in a macro to a target outside the macro!\n",
 | 
			
		||||
								item->filename, item->startline, item->endline);
 | 
			
		||||
						warns++;								
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -2188,7 +2305,7 @@ void check_pval_item(pval *item, struct argapp *apps, int in_globals)
 | 
			
		||||
#endif
 | 
			
		||||
	struct pval *macro_def;
 | 
			
		||||
	struct pval *app_def;
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
	char errmsg[4096];
 | 
			
		||||
	char *strp;
 | 
			
		||||
	
 | 
			
		||||
@@ -2209,6 +2326,9 @@ void check_pval_item(pval *item, struct argapp *apps, int in_globals)
 | 
			
		||||
		in_abstract_context = 0;
 | 
			
		||||
		current_context = item;
 | 
			
		||||
		current_extension = 0;
 | 
			
		||||
 | 
			
		||||
		check_macro_returns(item);
 | 
			
		||||
		
 | 
			
		||||
		for (lp=item->u2.arglist; lp; lp=lp->next) {
 | 
			
		||||
		
 | 
			
		||||
		}
 | 
			
		||||
@@ -2282,11 +2402,32 @@ void check_pval_item(pval *item, struct argapp *apps, int in_globals)
 | 
			
		||||
			|| strcasecmp(item->u1.str,"while") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"endwhile") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"random") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"gosub") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"return") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"gosubif") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"continuewhile") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"endwhile") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"execif") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"execiftime") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"exitwhile") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"goto") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"macro") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"macroexclusive") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"macroif") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"stackpop") == 0
 | 
			
		||||
			|| strcasecmp(item->u1.str,"execIf") == 0 ) {
 | 
			
		||||
			ast_log(LOG_WARNING,"Warning: file %s, line %d-%d: application call to %s needs to be re-written using AEL if, while, goto, etc. keywords instead!\n",
 | 
			
		||||
			ast_log(LOG_WARNING,"Warning: file %s, line %d-%d: application call to %s affects flow of control, and needs to be re-written using AEL if, while, goto, etc. keywords instead!\n",
 | 
			
		||||
					item->filename, item->startline, item->endline, item->u1.str);
 | 
			
		||||
			warns++;
 | 
			
		||||
		}
 | 
			
		||||
		if (strcasecmp(item->u1.str,"macroexit") == 0) {
 | 
			
		||||
				ast_log(LOG_WARNING, "Warning: file %s, line %d-%d: I am converting the MacroExit call here to a return statement.\n",
 | 
			
		||||
						item->filename, item->startline, item->endline);
 | 
			
		||||
				item->type = PV_RETURN;
 | 
			
		||||
				free(item->u1.str);
 | 
			
		||||
				item->u1.str = 0;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
#ifdef AAL_ARGCHECK
 | 
			
		||||
		found = 0;
 | 
			
		||||
		for (app=apps; app; app=app->next) {
 | 
			
		||||
@@ -2775,6 +2916,7 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 | 
			
		||||
	char new_label[2000];
 | 
			
		||||
	int default_exists;
 | 
			
		||||
	int local_control_statement_count;
 | 
			
		||||
	int first;
 | 
			
		||||
	struct ael_priority *loop_break_save;
 | 
			
		||||
	struct ael_priority *loop_continue_save;
 | 
			
		||||
	struct ael_extension *switch_case;
 | 
			
		||||
@@ -3022,7 +3164,7 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 | 
			
		||||
							linkprio(switch_case, fall_thru);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					if (switch_case->return_needed) {
 | 
			
		||||
					if (switch_case->return_needed) { /* returns don't generate a goto eoe (end of extension) any more, just a Return() app call) */
 | 
			
		||||
						char buf[2000];
 | 
			
		||||
						struct ael_priority *np2 = new_prio();
 | 
			
		||||
						np2->type = AEL_APPCALL;
 | 
			
		||||
@@ -3083,7 +3225,7 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 | 
			
		||||
							linkprio(switch_case, fall_thru);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					if (switch_case->return_needed) {
 | 
			
		||||
					if (switch_case->return_needed) { /* returns don't generate a goto eoe (end of extension) any more, just a Return() app call) */
 | 
			
		||||
						char buf[2000];
 | 
			
		||||
						struct ael_priority *np2 = new_prio();
 | 
			
		||||
						np2->type = AEL_APPCALL;
 | 
			
		||||
@@ -3146,7 +3288,7 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 | 
			
		||||
							linkprio(switch_case, fall_thru);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					if (switch_case->return_needed) {
 | 
			
		||||
					if (switch_case->return_needed) { /* returns don't generate a goto eoe (end of extension) any more, just a Return() app call) */
 | 
			
		||||
						char buf[2000];
 | 
			
		||||
						struct ael_priority *np2 = new_prio();
 | 
			
		||||
						np2->type = AEL_APPCALL;
 | 
			
		||||
@@ -3170,12 +3312,19 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 | 
			
		||||
		case PV_MACRO_CALL:
 | 
			
		||||
			pr = new_prio();
 | 
			
		||||
			pr->type = AEL_APPCALL;
 | 
			
		||||
			snprintf(buf1,sizeof(buf1),"%s", p->u1.str);
 | 
			
		||||
			snprintf(buf1,sizeof(buf1),"%s|s|1", p->u1.str);
 | 
			
		||||
			first = 1;
 | 
			
		||||
			for (p2 = p->u2.arglist; p2; p2 = p2->next) {
 | 
			
		||||
				strcat(buf1,"|");
 | 
			
		||||
				if( first )
 | 
			
		||||
				{
 | 
			
		||||
					strcat(buf1,":");
 | 
			
		||||
					first = 0;
 | 
			
		||||
				}
 | 
			
		||||
				else
 | 
			
		||||
					strcat(buf1,"|");
 | 
			
		||||
				strcat(buf1,p2->u1.str);
 | 
			
		||||
			}
 | 
			
		||||
			pr->app = strdup("Macro");
 | 
			
		||||
			pr->app = strdup("Gosub");
 | 
			
		||||
			pr->appargs = strdup(buf1);
 | 
			
		||||
			pr->origin = p;
 | 
			
		||||
			linkprio(exten, pr);
 | 
			
		||||
@@ -3206,9 +3355,9 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 | 
			
		||||
 | 
			
		||||
		case PV_RETURN: /* hmmmm */
 | 
			
		||||
			pr = new_prio();
 | 
			
		||||
			pr->type = AEL_RETURN; /* simple goto */
 | 
			
		||||
			exten->return_needed++;
 | 
			
		||||
			pr->app = strdup("Goto");
 | 
			
		||||
			pr->type = AEL_RETURN; /* simple Return */
 | 
			
		||||
			/* exten->return_needed++; */
 | 
			
		||||
			pr->app = strdup("Return");
 | 
			
		||||
			pr->appargs = strdup("");
 | 
			
		||||
			pr->origin = p;
 | 
			
		||||
			linkprio(exten, pr);
 | 
			
		||||
@@ -3222,46 +3371,6 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 | 
			
		||||
			linkprio(exten, pr);
 | 
			
		||||
			break;
 | 
			
		||||
 | 
			
		||||
#ifdef OLD_RAND_ACTION
 | 
			
		||||
		case PV_RANDOM:
 | 
			
		||||
			control_statement_count++;
 | 
			
		||||
			snprintf(new_label,sizeof(new_label),"rand-%s-%d", label, control_statement_count);
 | 
			
		||||
			rand_test = new_prio();
 | 
			
		||||
			rand_test->type = AEL_RAND_CONTROL;
 | 
			
		||||
			snprintf(buf1,sizeof(buf1),"$[%s]",
 | 
			
		||||
					 p->u1.str );
 | 
			
		||||
			rand_test->app = 0;
 | 
			
		||||
			rand_test->appargs = strdup(buf1);
 | 
			
		||||
			rand_test->origin = p;
 | 
			
		||||
			
 | 
			
		||||
			rand_end = new_prio();
 | 
			
		||||
			rand_end->type = AEL_APPCALL;
 | 
			
		||||
			snprintf(buf1,sizeof(buf1),"Finish rand-%s-%d", label, control_statement_count);
 | 
			
		||||
			rand_end->app = strdup("NoOp");
 | 
			
		||||
			rand_end->appargs = strdup(buf1);
 | 
			
		||||
			
 | 
			
		||||
			rand_skip = new_prio();
 | 
			
		||||
			rand_skip->type = AEL_CONTROL1; /* simple goto */
 | 
			
		||||
			rand_skip->goto_true = rand_end;
 | 
			
		||||
			rand_skip->origin  = p;
 | 
			
		||||
 | 
			
		||||
			rand_test->goto_true = rand_skip; /* +1, really */
 | 
			
		||||
 | 
			
		||||
			linkprio(exten, rand_test);
 | 
			
		||||
			
 | 
			
		||||
			if (p->u3.else_statements) {
 | 
			
		||||
				gen_prios(exten, new_label, p->u3.else_statements, mother_exten, this_context); /* this will link in all the else statements here */
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
			linkprio(exten, rand_skip);
 | 
			
		||||
			
 | 
			
		||||
			gen_prios(exten, new_label, p->u2.statements, mother_exten, this_context); /* this will link in all the "true" statements here */
 | 
			
		||||
 | 
			
		||||
			linkprio(exten, rand_end);
 | 
			
		||||
			
 | 
			
		||||
			break;
 | 
			
		||||
#endif			
 | 
			
		||||
 | 
			
		||||
		case PV_IFTIME:
 | 
			
		||||
			control_statement_count++;
 | 
			
		||||
			snprintf(new_label,sizeof(new_label),"iftime-%s-%d", label, control_statement_count);
 | 
			
		||||
@@ -3383,7 +3492,7 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
 | 
			
		||||
			snprintf(new_label,sizeof(new_label),"catch-%s-%d",p->u1.str, control_statement_count);
 | 
			
		||||
			
 | 
			
		||||
			gen_prios(switch_case, new_label, p->u2.statements,mother_exten,this_context); /* this will link in all the catch body statements here */
 | 
			
		||||
			if (switch_case->return_needed) {
 | 
			
		||||
			if (switch_case->return_needed) { /* returns now generate a Return() app call, no longer a goto to the end of the exten */
 | 
			
		||||
				char buf[2000];
 | 
			
		||||
				struct ael_priority *np2 = new_prio();
 | 
			
		||||
				np2->type = AEL_APPCALL;
 | 
			
		||||
@@ -3500,8 +3609,8 @@ void add_extensions(struct ael_extension *exten)
 | 
			
		||||
				break;
 | 
			
		||||
 | 
			
		||||
			case AEL_RETURN:
 | 
			
		||||
				strcpy(app,"Goto");
 | 
			
		||||
				snprintf(appargs,sizeof(appargs), "%d", exten->return_target->priority_num);
 | 
			
		||||
				strcpy(app,"Return");
 | 
			
		||||
				appargs[0] = 0;
 | 
			
		||||
				break;
 | 
			
		||||
				
 | 
			
		||||
			default:
 | 
			
		||||
@@ -3619,9 +3728,8 @@ void ast_compile_ael2(struct ast_context **local_contexts, struct pval *root)
 | 
			
		||||
		
 | 
			
		||||
		switch (p->type) {
 | 
			
		||||
		case PV_MACRO:
 | 
			
		||||
			strcpy(buf,"macro-");
 | 
			
		||||
			strcat(buf,p->u1.str);
 | 
			
		||||
			context = ast_context_create(local_contexts, buf, registrar);
 | 
			
		||||
			
 | 
			
		||||
			context = ast_context_create(local_contexts, p->u1.str, registrar);
 | 
			
		||||
			
 | 
			
		||||
			exten = new_exten();
 | 
			
		||||
			exten->context = context;
 | 
			
		||||
@@ -3640,7 +3748,7 @@ void ast_compile_ael2(struct ast_context **local_contexts, struct pval *root)
 | 
			
		||||
			
 | 
			
		||||
			/* CONTAINS APPCALLS, CATCH, just like extensions... */
 | 
			
		||||
			gen_prios(exten, p->u1.str, p->u3.macro_statements, 0, context );
 | 
			
		||||
			if (exten->return_needed) {
 | 
			
		||||
			if (exten->return_needed) {  /* most likely, this will go away */
 | 
			
		||||
				struct ael_priority *np2 = new_prio();
 | 
			
		||||
				np2->type = AEL_APPCALL;
 | 
			
		||||
				np2->app = strdup("NoOp");
 | 
			
		||||
@@ -3687,7 +3795,7 @@ void ast_compile_ael2(struct ast_context **local_contexts, struct pval *root)
 | 
			
		||||
						exten->hints = strdup(p2->u3.hints);
 | 
			
		||||
					exten->regexten = p2->u4.regexten;
 | 
			
		||||
					gen_prios(exten, p->u1.str, p2->u2.statements, 0, context );
 | 
			
		||||
					if (exten->return_needed) {
 | 
			
		||||
					if (exten->return_needed) { /* returns don't generate a goto eoe (end of extension) any more, just a Return() app call) */
 | 
			
		||||
						struct ael_priority *np2 = new_prio();
 | 
			
		||||
						np2->type = AEL_APPCALL;
 | 
			
		||||
						np2->app = strdup("NoOp");
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user