Douglas Garstang
2006-Oct-04 22:03 UTC
[asterisk-users] AEL2 #include madness in Asterisk 1.4 - Murf?
Asterisk 1.4 beta2. My top level /etc/asterisk/extensions.ael has the following two lines: #include "include/syst/extensions.ael" #include "include/btck/extensions.ael" Here is the console output on Asterisk load. app_system.so => (Generic System() application) [Oct 4 15:48:15] NOTICE[1143]: pbx_ael.c:3798 pbx_load_module: Starting AEL load process. [Oct 4 15:48:15] NOTICE[1143]: pbx_ael.c:3805 pbx_load_module: AEL load process: calculated config file name '/etc/asterisk/extensions.ael'. [Oct 4 15:48:15] NOTICE[1143]: ael.flex:429 ael_yylex: --Read in included file /etc/asterisk/include/syst/extensions.ael, 4130 chars [Oct 4 15:48:15] NOTICE[1143]: ael.flex:429 ael_yylex: --Read in included file /etc/asterisk/include/syst/macros.ael, 1463 chars [Oct 4 15:48:15] NOTICE[1143]: ael.flex:429 ael_yylex: --Read in included file /etc/asterisk/include/syst/dundiapps.ael, 758 chars [Oct 4 15:48:15] NOTICE[1143]: ael.flex:429 ael_yylex: --Read in included file /etc/asterisk/include/syst/rdapps.ael, 275 chars [Oct 4 15:48:15] NOTICE[1143]: ael.flex:429 ael_yylex: --Read in included file /etc/asterisk/include/btck/extensions.ael, 1385 chars [Oct 4 15:48:15] NOTICE[1143]: pbx_ael.c:3808 pbx_load_module: AEL load process: parsed config file name '/etc/asterisk/extensions.ael'. [Oct 4 15:48:15] ERROR[1143]: pbx_ael.c:1162 check_goto: Error: file /etc/asterisk/include/syst/extensions.ael, line 157-157: goto: no label remote exists in the current extension! [Oct 4 15:48:15] ERROR[1143]: pbx_ael.c:1162 check_goto: Error: file /etc/asterisk/include/syst/extensions.ael, line 159-159: goto: no label local exists in the current extension! [Oct 4 15:48:15] ERROR[1143]: pbx_ael.c:3821 pbx_load_module: Sorry, but 0 syntax errors and 2 semantic errors were detected. It doesn't make sense to compile. pbx_ael.so => (Asterisk Extension Language Compiler) Here's the context from /etc/asterisk/include/syst/extensions.ael, that contains lines 157 that the parser is complaining about: 148 context syst_Route { 149 150 _[*0123456789]. => { 151 NoOp(*** Originated call ${CALLERID} -> ${EXTEN}); 152 Set(TMP=${CALLERID(number)}); 153 &SysLogger(This is a test message); 154 &FastAGIConnectGet(CALLERID); 155 ChanIsAvail(SIP/${EXTEN}); 156 if ("${AVAILCHAN}" = "") { 157 goto remote; 158 } else { 159 goto local; 160 } 161 remote: 162 NoOp(REMOTE); 163 Set(PATH=${DUNDILOOKUP(3254103,DUNDIRegistr)}); 164 //Set(PATH=${DUNDILOOKUP(${EXTEN},DUNDIRegistr)}); 165 Dial(${PATH}); 166 Hangup(); 167 local: 168 NoOp(LOCAL); 169 Dial(SIP/${EXTEN}); 170 Hangup(); 171 172 } 173 } As you can quite clearly see, labels 'remote' and 'local' DO exist in the syst_Route context. Now, if I switcheroo the two includes around in the top level /etc/asterisk/extensions.ael, to: #include "include/btck/extensions.ael" #include "include/syst/extensions.ael" and reload Asterisk, I get: [Oct 4 15:57:28] NOTICE[1202]: pbx_ael.c:3813 pbx_load_module: AEL load process: compiled config file name '/etc/asterisk/extensions.ael'. [Oct 4 15:57:28] NOTICE[1202]: pbx_ael.c:3816 pbx_load_module: AEL load process: merged config file name '/etc/asterisk/extensions.ael'. [Oct 4 15:57:28] WARNING[1202]: pbx.c:6194 ast_context_verify_includes: Context 'syst_PSTNStart' tries includes nonexistent context 'syst_AppACDQueue' [Oct 4 15:57:28] WARNING[1202]: pbx.c:6194 ast_context_verify_includes: Context 'btck_CallStart' tries includes nonexistent context 'syst_ACD' [Oct 4 15:57:28] NOTICE[1202]: pbx_ael.c:3819 pbx_load_module: AEL load process: verified config file name '/etc/asterisk/extensions.ael'. pbx_ael.so => (Asterisk Extension Language Compiler) There are no errors about nonexistent labels in the syst_Route extension. I would not have thought that #include order made any difference, since all we are doing is pulling a bunch of contexts into a global context space. Anyone? Mr Murpy, care to take a shot at it? :) Doug.
Steve Murphy
2006-Oct-05 06:10 UTC
[asterisk-users] Re: AEL2 #include madness in Asterisk 1.4 - Murf?
On Thu, 2006-10-05 at 01:08 -0700, dgarstang@oneeighty.com wrote:> Asterisk 1.4 beta2. > > My top level /etc/asterisk/extensions.ael has the following > two lines: > > #include "include/syst/extensions.ael" > #include "include/btck/extensions.ael" > > Here is the console output on Asterisk load. > > app_system.so => (Generic System() application) > [Oct 4 15:48:15] NOTICE[1143]: pbx_ael.c:3798 > pbx_load_module: Starting AEL load process. > [Oct 4 15:48:15] NOTICE[1143]: pbx_ael.c:3805 > pbx_load_module: AEL load process: calculated config file name > '/etc/asterisk/extensions.ael'. > [Oct 4 15:48:15] NOTICE[1143]: ael.flex:429 ael_yylex: > --Read in included > file /etc/asterisk/include/syst/extensions.ael, 4130 chars > [Oct 4 15:48:15] NOTICE[1143]: ael.flex:429 ael_yylex: > --Read in included file /etc/asterisk/include/syst/macros.ael, > 1463 chars > [Oct 4 15:48:15] NOTICE[1143]: ael.flex:429 ael_yylex: > --Read in included > file /etc/asterisk/include/syst/dundiapps.ael, 758 chars > [Oct 4 15:48:15] NOTICE[1143]: ael.flex:429 ael_yylex: > --Read in included file /etc/asterisk/include/syst/rdapps.ael, > 275 chars > [Oct 4 15:48:15] NOTICE[1143]: ael.flex:429 ael_yylex: > --Read in included > file /etc/asterisk/include/btck/extensions.ael, 1385 chars > [Oct 4 15:48:15] NOTICE[1143]: pbx_ael.c:3808 > pbx_load_module: AEL load process: parsed config file name > '/etc/asterisk/extensions.ael'. > [Oct 4 15:48:15] ERROR[1143]: pbx_ael.c:1162 check_goto: > Error: file /etc/asterisk/include/syst/extensions.ael, line > 157-157: goto: no label remote exists in the current > extension! > [Oct 4 15:48:15] ERROR[1143]: pbx_ael.c:1162 check_goto: > Error: file /etc/asterisk/include/syst/extensions.ael, line > 159-159: goto: no label local exists in the current > extension! > [Oct 4 15:48:15] ERROR[1143]: pbx_ael.c:3821 pbx_load_module: > Sorry, but 0 syntax errors and 2 semantic errors were > detected. It doesn't make sense to compile. > pbx_ael.so => (Asterisk Extension Language Compiler) > > Here's the context > from /etc/asterisk/include/syst/extensions.ael, that contains > lines 157 that the parser is complaining about: > > 148 context syst_Route { > 149 > 150 _[*0123456789]. => { > 151 NoOp(*** Originated call ${CALLERID} -> > ${EXTEN}); > 152 Set(TMP=${CALLERID(number)}); > 153 &SysLogger(This is a test message); > 154 &FastAGIConnectGet(CALLERID); > 155 ChanIsAvail(SIP/${EXTEN}); > 156 if ("${AVAILCHAN}" = "") { > 157 goto remote; > 158 } else { > 159 goto local; > 160 } > 161 remote: > 162 NoOp(REMOTE); > 163 Set(PATH> ${DUNDILOOKUP(3254103,DUNDIRegistr)}); > 164 //Set(PATH> ${DUNDILOOKUP(${EXTEN},DUNDIRegistr)}); > 165 Dial(${PATH}); > 166 Hangup(); > 167 local: > 168 NoOp(LOCAL); > 169 Dial(SIP/${EXTEN}); > 170 Hangup(); > 171 > 172 } > 173 } > > As you can quite clearly see, labels 'remote' and 'local' DO > exist in the syst_Route context. > > Now, if I switcheroo the two includes around in the top > level /etc/asterisk/extensions.ael, to: > > #include "include/btck/extensions.ael" > #include "include/syst/extensions.ael" > > and reload Asterisk, I get: > > [Oct 4 15:57:28] NOTICE[1202]: pbx_ael.c:3813 > pbx_load_module: AEL load process: compiled config file name > '/etc/asterisk/extensions.ael'. > [Oct 4 15:57:28] NOTICE[1202]: pbx_ael.c:3816 > pbx_load_module: AEL load process: merged config file name > '/etc/asterisk/extensions.ael'. > [Oct 4 15:57:28] WARNING[1202]: pbx.c:6194 > ast_context_verify_includes: Context 'syst_PSTNStart' tries > includes nonexistent context 'syst_AppACDQueue' > [Oct 4 15:57:28] WARNING[1202]: pbx.c:6194 > ast_context_verify_includes: Context 'btck_CallStart' tries > includes nonexistent context 'syst_ACD' > [Oct 4 15:57:28] NOTICE[1202]: pbx_ael.c:3819 > pbx_load_module: AEL load process: verified config file name > '/etc/asterisk/extensions.ael'. > pbx_ael.so => (Asterisk Extension Language Compiler) > > There are no errors about nonexistent labels in the syst_Route > extension. I would not have thought that #include order made > any difference, since all we are doing is pulling a bunch of > contexts into a global context space. > > Anyone? Mr Murpy, care to take a shot at it? :) > > Doug.Doug-- I cannot reproduce the problems, given just the one context. There is something magical about your data, that the code trips over it, and to find the bugs, I will need your files! Is this possible? As to order, you are correct, it should not make a difference what order the files are included in the data. I did note that in the above output, you got the error messages: [Oct 4 15:57:28] WARNING[1202]: pbx.c:6194 ast_context_verify_includes: Context 'syst_PSTNStart' tries includes nonexistent context 'syst_AppACDQueue' [Oct 4 15:57:28] WARNING[1202]: pbx.c:6194 ast_context_verify_includes: Context 'btck_CallStart' tries includes nonexistent context 'syst_ACD' These messages do not come from the AEL compiler, but rather, are complaints from the bowels of the asterisk engine: somewhere, it's not finding some included contexts... which may mean yet one more bug in the AEL code: why didn't AEL make note of it first? murf -- Steve Murphy Software Developer Digium -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/x-pkcs7-signature Size: 3227 bytes Desc: not available Url : http://lists.digium.com/pipermail/asterisk-users/attachments/20061005/e682b5e6/smime.bin