Index: pbx/ael/ael-test/ref.ael-test8 =================================================================== --- pbx/ael/ael-test/ref.ael-test8 (revision 84173) +++ pbx/ael/ael-test/ref.ael-test8 (working copy) @@ -2,11 +2,11 @@ (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_ael.c line:3803 func: pbx_load_module Starting AEL load process. -LOG: lev:2 file:pbx_ael.c line:3810 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3818 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3821 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3823 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3826 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3829 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. -LOG: lev:4 file:ael2_parse line:479 func: main 1 contexts, 5 extensions, 15 priorities +LOG: lev:2 file:pbx_ael.c line:4069 func: pbx_load_module Starting AEL load process. +LOG: lev:2 file:pbx_ael.c line:4076 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4084 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4087 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4089 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4092 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4095 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. +LOG: lev:4 file:ael2_parse line:527 func: main 1 contexts, 7 extensions, 17 priorities Index: pbx/ael/ael-test/ref.ael-vtest13 =================================================================== --- pbx/ael/ael-test/ref.ael-vtest13 (revision 84173) +++ pbx/ael/ael-test/ref.ael-vtest13 (working copy) @@ -19,6 +19,7 @@ exten => a,1,VoiceMailMain(${ext}) exten => _sw-1-.,10,Voicemail(u${ext}) exten => _sw-1-.,11,Goto(s|5) +exten => sw-1-,10,Goto(sw-1-.|10) exten => sw-1-ANSWER,10,Goto(s|5) exten => sw-1-NOANSWER,10,Voicemail(u${ext}) exten => sw-1-NOANSWER,11,Goto(s|5) @@ -39,6 +40,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_1-3) exten => _sw-3-.,10,Voicemail(u${ext}) exten => _sw-3-.,11,Goto(s|10) +exten => sw-3-,10,Goto(sw-3-.|10) exten => sw-3-NOANSWER,10,Voicemail(u${ext}) exten => sw-3-NOANSWER,11,Goto(s|10) exten => sw-3-ANSWER,10,Goto(s|10) @@ -63,6 +65,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_2-4) exten => _sw-4-.,10,Voicemail(u${ext}) exten => _sw-4-.,11,Goto(s|10) +exten => sw-4-,10,Goto(sw-4-.|10) exten => sw-4-NOANSWER,10,Voicemail(u${ext}) exten => sw-4-NOANSWER,11,Goto(s|10) exten => sw-4-ANSWER,10,Goto(s|10) @@ -87,6 +90,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_3-5) exten => _sw-5-.,10,Voicemail(u${ext}) exten => _sw-5-.,11,Goto(s|10) +exten => sw-5-,10,Goto(sw-5-.|10) exten => sw-5-NOANSWER,10,Voicemail(u${ext}) exten => sw-5-NOANSWER,11,Goto(s|10) exten => sw-5-ANSWER,10,Goto(s|10) @@ -111,6 +115,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_4-6) exten => _sw-6-.,10,Voicemail(u${ext}) exten => _sw-6-.,11,Goto(s|10) +exten => sw-6-,10,Goto(sw-6-.|10) exten => sw-6-NOANSWER,10,Voicemail(u${ext}) exten => sw-6-NOANSWER,11,Goto(s|10) exten => sw-6-ANSWER,10,Goto(s|10) @@ -135,6 +140,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_5-7) exten => _sw-7-.,10,Voicemail(u${ext}) exten => _sw-7-.,11,Goto(s|10) +exten => sw-7-,10,Goto(sw-7-.|10) exten => sw-7-NOANSWER,10,Voicemail(u${ext}) exten => sw-7-NOANSWER,11,Goto(s|10) exten => sw-7-ANSWER,10,Goto(s|10) @@ -159,6 +165,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_6-8) exten => _sw-8-.,10,Voicemail(u${ext}) exten => _sw-8-.,11,Goto(s|10) +exten => sw-8-,10,Goto(sw-8-.|10) exten => sw-8-NOANSWER,10,Voicemail(u${ext}) exten => sw-8-NOANSWER,11,Goto(s|10) exten => sw-8-ANSWER,10,Goto(s|10) @@ -183,6 +190,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_7-9) exten => _sw-9-.,10,Voicemail(u${ext}) exten => _sw-9-.,11,Goto(s|10) +exten => sw-9-,10,Goto(sw-9-.|10) exten => sw-9-NOANSWER,10,Voicemail(u${ext}) exten => sw-9-NOANSWER,11,Goto(s|10) exten => sw-9-ANSWER,10,Goto(s|10) @@ -207,6 +215,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_8-10) exten => _sw-10-.,10,Voicemail(u${ext}) exten => _sw-10-.,11,Goto(s|10) +exten => sw-10-,10,Goto(sw-10-.|10) exten => sw-10-NOANSWER,10,Voicemail(u${ext}) exten => sw-10-NOANSWER,11,Goto(s|10) exten => sw-10-ANSWER,10,Goto(s|10) @@ -231,6 +240,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_9-11) exten => _sw-11-.,10,Voicemail(u${ext}) exten => _sw-11-.,11,Goto(s|10) +exten => sw-11-,10,Goto(sw-11-.|10) exten => sw-11-NOANSWER,10,Voicemail(u${ext}) exten => sw-11-NOANSWER,11,Goto(s|10) exten => sw-11-ANSWER,10,Goto(s|10) @@ -255,6 +265,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_10-12) exten => _sw-12-.,10,Voicemail(u${ext}) exten => _sw-12-.,11,Goto(s|10) +exten => sw-12-,10,Goto(sw-12-.|10) exten => sw-12-NOANSWER,10,Voicemail(u${ext}) exten => sw-12-NOANSWER,11,Goto(s|10) exten => sw-12-ANSWER,10,Goto(s|10) @@ -279,6 +290,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_11-13) exten => _sw-13-.,10,Voicemail(u${ext}) exten => _sw-13-.,11,Goto(s|10) +exten => sw-13-,10,Goto(sw-13-.|10) exten => sw-13-NOANSWER,10,Voicemail(u${ext}) exten => sw-13-NOANSWER,11,Goto(s|10) exten => sw-13-ANSWER,10,Goto(s|10) @@ -303,6 +315,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_12-14) exten => _sw-14-.,10,Voicemail(u${ext}) exten => _sw-14-.,11,Goto(s|10) +exten => sw-14-,10,Goto(sw-14-.|10) exten => sw-14-NOANSWER,10,Voicemail(u${ext}) exten => sw-14-NOANSWER,11,Goto(s|10) exten => sw-14-ANSWER,10,Goto(s|10) @@ -327,6 +340,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_13-15) exten => _sw-15-.,10,Voicemail(u${ext}) exten => _sw-15-.,11,Goto(s|10) +exten => sw-15-,10,Goto(sw-15-.|10) exten => sw-15-NOANSWER,10,Voicemail(u${ext}) exten => sw-15-NOANSWER,11,Goto(s|10) exten => sw-15-ANSWER,10,Goto(s|10) @@ -351,6 +365,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_14-16) exten => _sw-16-.,10,Voicemail(u${ext}) exten => _sw-16-.,11,Goto(s|10) +exten => sw-16-,10,Goto(sw-16-.|10) exten => sw-16-NOANSWER,10,Voicemail(u${ext}) exten => sw-16-NOANSWER,11,Goto(s|10) exten => sw-16-ANSWER,10,Goto(s|10) @@ -375,6 +390,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_15-17) exten => _sw-17-.,10,Voicemail(u${ext}) exten => _sw-17-.,11,Goto(s|10) +exten => sw-17-,10,Goto(sw-17-.|10) exten => sw-17-NOANSWER,10,Voicemail(u${ext}) exten => sw-17-NOANSWER,11,Goto(s|10) exten => sw-17-ANSWER,10,Goto(s|10) @@ -399,6 +415,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_16-18) exten => _sw-18-.,10,Voicemail(u${ext}) exten => _sw-18-.,11,Goto(s|10) +exten => sw-18-,10,Goto(sw-18-.|10) exten => sw-18-NOANSWER,10,Voicemail(u${ext}) exten => sw-18-NOANSWER,11,Goto(s|10) exten => sw-18-ANSWER,10,Goto(s|10) @@ -423,6 +440,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_17-19) exten => _sw-19-.,10,Voicemail(u${ext}) exten => _sw-19-.,11,Goto(s|10) +exten => sw-19-,10,Goto(sw-19-.|10) exten => sw-19-NOANSWER,10,Voicemail(u${ext}) exten => sw-19-NOANSWER,11,Goto(s|10) exten => sw-19-ANSWER,10,Goto(s|10) @@ -447,6 +465,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_18-20) exten => _sw-20-.,10,Voicemail(u${ext}) exten => _sw-20-.,11,Goto(s|10) +exten => sw-20-,10,Goto(sw-20-.|10) exten => sw-20-NOANSWER,10,Voicemail(u${ext}) exten => sw-20-NOANSWER,11,Goto(s|10) exten => sw-20-ANSWER,10,Goto(s|10) @@ -471,6 +490,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_19-21) exten => _sw-21-.,10,Voicemail(u${ext}) exten => _sw-21-.,11,Goto(s|10) +exten => sw-21-,10,Goto(sw-21-.|10) exten => sw-21-NOANSWER,10,Voicemail(u${ext}) exten => sw-21-NOANSWER,11,Goto(s|10) exten => sw-21-ANSWER,10,Goto(s|10) @@ -495,6 +515,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_20-22) exten => _sw-22-.,10,Voicemail(u${ext}) exten => _sw-22-.,11,Goto(s|10) +exten => sw-22-,10,Goto(sw-22-.|10) exten => sw-22-NOANSWER,10,Voicemail(u${ext}) exten => sw-22-NOANSWER,11,Goto(s|10) exten => sw-22-ANSWER,10,Goto(s|10) @@ -519,6 +540,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_21-23) exten => _sw-23-.,10,Voicemail(u${ext}) exten => _sw-23-.,11,Goto(s|10) +exten => sw-23-,10,Goto(sw-23-.|10) exten => sw-23-NOANSWER,10,Voicemail(u${ext}) exten => sw-23-NOANSWER,11,Goto(s|10) exten => sw-23-ANSWER,10,Goto(s|10) @@ -543,6 +565,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_22-24) exten => _sw-24-.,10,Voicemail(u${ext}) exten => _sw-24-.,11,Goto(s|10) +exten => sw-24-,10,Goto(sw-24-.|10) exten => sw-24-NOANSWER,10,Voicemail(u${ext}) exten => sw-24-NOANSWER,11,Goto(s|10) exten => sw-24-ANSWER,10,Goto(s|10) @@ -567,6 +590,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_23-25) exten => _sw-25-.,10,Voicemail(u${ext}) exten => _sw-25-.,11,Goto(s|10) +exten => sw-25-,10,Goto(sw-25-.|10) exten => sw-25-NOANSWER,10,Voicemail(u${ext}) exten => sw-25-NOANSWER,11,Goto(s|10) exten => sw-25-ANSWER,10,Goto(s|10) @@ -591,6 +615,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_24-26) exten => _sw-26-.,10,Voicemail(u${ext}) exten => _sw-26-.,11,Goto(s|10) +exten => sw-26-,10,Goto(sw-26-.|10) exten => sw-26-NOANSWER,10,Voicemail(u${ext}) exten => sw-26-NOANSWER,11,Goto(s|10) exten => sw-26-ANSWER,10,Goto(s|10) @@ -615,6 +640,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_25-27) exten => _sw-27-.,10,Voicemail(u${ext}) exten => _sw-27-.,11,Goto(s|10) +exten => sw-27-,10,Goto(sw-27-.|10) exten => sw-27-NOANSWER,10,Voicemail(u${ext}) exten => sw-27-NOANSWER,11,Goto(s|10) exten => sw-27-ANSWER,10,Goto(s|10) @@ -639,6 +665,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_26-28) exten => _sw-28-.,10,Voicemail(u${ext}) exten => _sw-28-.,11,Goto(s|10) +exten => sw-28-,10,Goto(sw-28-.|10) exten => sw-28-NOANSWER,10,Voicemail(u${ext}) exten => sw-28-NOANSWER,11,Goto(s|10) exten => sw-28-ANSWER,10,Goto(s|10) @@ -663,6 +690,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_27-29) exten => _sw-29-.,10,Voicemail(u${ext}) exten => _sw-29-.,11,Goto(s|10) +exten => sw-29-,10,Goto(sw-29-.|10) exten => sw-29-NOANSWER,10,Voicemail(u${ext}) exten => sw-29-NOANSWER,11,Goto(s|10) exten => sw-29-ANSWER,10,Goto(s|10) @@ -687,6 +715,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_28-30) exten => _sw-30-.,10,Voicemail(u${ext}) exten => _sw-30-.,11,Goto(s|10) +exten => sw-30-,10,Goto(sw-30-.|10) exten => sw-30-NOANSWER,10,Voicemail(u${ext}) exten => sw-30-NOANSWER,11,Goto(s|10) exten => sw-30-ANSWER,10,Goto(s|10) @@ -711,6 +740,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_29-31) exten => _sw-31-.,10,Voicemail(u${ext}) exten => _sw-31-.,11,Goto(s|10) +exten => sw-31-,10,Goto(sw-31-.|10) exten => sw-31-NOANSWER,10,Voicemail(u${ext}) exten => sw-31-NOANSWER,11,Goto(s|10) exten => sw-31-ANSWER,10,Goto(s|10) @@ -735,6 +765,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_30-32) exten => _sw-32-.,10,Voicemail(u${ext}) exten => _sw-32-.,11,Goto(s|10) +exten => sw-32-,10,Goto(sw-32-.|10) exten => sw-32-NOANSWER,10,Voicemail(u${ext}) exten => sw-32-NOANSWER,11,Goto(s|10) exten => sw-32-ANSWER,10,Goto(s|10) @@ -759,6 +790,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_31-33) exten => _sw-33-.,10,Voicemail(u${ext}) exten => _sw-33-.,11,Goto(s|10) +exten => sw-33-,10,Goto(sw-33-.|10) exten => sw-33-NOANSWER,10,Voicemail(u${ext}) exten => sw-33-NOANSWER,11,Goto(s|10) exten => sw-33-ANSWER,10,Goto(s|10) @@ -783,6 +815,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_32-34) exten => _sw-34-.,10,Voicemail(u${ext}) exten => _sw-34-.,11,Goto(s|10) +exten => sw-34-,10,Goto(sw-34-.|10) exten => sw-34-NOANSWER,10,Voicemail(u${ext}) exten => sw-34-NOANSWER,11,Goto(s|10) exten => sw-34-ANSWER,10,Goto(s|10) @@ -807,6 +840,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_33-35) exten => _sw-35-.,10,Voicemail(u${ext}) exten => _sw-35-.,11,Goto(s|10) +exten => sw-35-,10,Goto(sw-35-.|10) exten => sw-35-NOANSWER,10,Voicemail(u${ext}) exten => sw-35-NOANSWER,11,Goto(s|10) exten => sw-35-ANSWER,10,Goto(s|10) @@ -831,6 +865,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_34-36) exten => _sw-36-.,10,Voicemail(u${ext}) exten => _sw-36-.,11,Goto(s|10) +exten => sw-36-,10,Goto(sw-36-.|10) exten => sw-36-NOANSWER,10,Voicemail(u${ext}) exten => sw-36-NOANSWER,11,Goto(s|10) exten => sw-36-ANSWER,10,Goto(s|10) @@ -855,6 +890,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_35-37) exten => _sw-37-.,10,Voicemail(u${ext}) exten => _sw-37-.,11,Goto(s|10) +exten => sw-37-,10,Goto(sw-37-.|10) exten => sw-37-NOANSWER,10,Voicemail(u${ext}) exten => sw-37-NOANSWER,11,Goto(s|10) exten => sw-37-ANSWER,10,Goto(s|10) @@ -879,6 +915,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_36-38) exten => _sw-38-.,10,Voicemail(u${ext}) exten => _sw-38-.,11,Goto(s|10) +exten => sw-38-,10,Goto(sw-38-.|10) exten => sw-38-NOANSWER,10,Voicemail(u${ext}) exten => sw-38-NOANSWER,11,Goto(s|10) exten => sw-38-ANSWER,10,Goto(s|10) @@ -903,6 +940,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_37-39) exten => _sw-39-.,10,Voicemail(u${ext}) exten => _sw-39-.,11,Goto(s|10) +exten => sw-39-,10,Goto(sw-39-.|10) exten => sw-39-NOANSWER,10,Voicemail(u${ext}) exten => sw-39-NOANSWER,11,Goto(s|10) exten => sw-39-ANSWER,10,Goto(s|10) @@ -927,6 +965,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_38-40) exten => _sw-40-.,10,Voicemail(u${ext}) exten => _sw-40-.,11,Goto(s|10) +exten => sw-40-,10,Goto(sw-40-.|10) exten => sw-40-NOANSWER,10,Voicemail(u${ext}) exten => sw-40-NOANSWER,11,Goto(s|10) exten => sw-40-ANSWER,10,Goto(s|10) @@ -951,6 +990,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_39-41) exten => _sw-41-.,10,Voicemail(u${ext}) exten => _sw-41-.,11,Goto(s|10) +exten => sw-41-,10,Goto(sw-41-.|10) exten => sw-41-NOANSWER,10,Voicemail(u${ext}) exten => sw-41-NOANSWER,11,Goto(s|10) exten => sw-41-ANSWER,10,Goto(s|10) @@ -975,6 +1015,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_40-42) exten => _sw-42-.,10,Voicemail(u${ext}) exten => _sw-42-.,11,Goto(s|10) +exten => sw-42-,10,Goto(sw-42-.|10) exten => sw-42-NOANSWER,10,Voicemail(u${ext}) exten => sw-42-NOANSWER,11,Goto(s|10) exten => sw-42-ANSWER,10,Goto(s|10) @@ -999,6 +1040,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_41-43) exten => _sw-43-.,10,Voicemail(u${ext}) exten => _sw-43-.,11,Goto(s|10) +exten => sw-43-,10,Goto(sw-43-.|10) exten => sw-43-NOANSWER,10,Voicemail(u${ext}) exten => sw-43-NOANSWER,11,Goto(s|10) exten => sw-43-ANSWER,10,Goto(s|10) @@ -1023,6 +1065,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_42-44) exten => _sw-44-.,10,Voicemail(u${ext}) exten => _sw-44-.,11,Goto(s|10) +exten => sw-44-,10,Goto(sw-44-.|10) exten => sw-44-NOANSWER,10,Voicemail(u${ext}) exten => sw-44-NOANSWER,11,Goto(s|10) exten => sw-44-ANSWER,10,Goto(s|10) @@ -1047,6 +1090,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_43-45) exten => _sw-45-.,10,Voicemail(u${ext}) exten => _sw-45-.,11,Goto(s|10) +exten => sw-45-,10,Goto(sw-45-.|10) exten => sw-45-NOANSWER,10,Voicemail(u${ext}) exten => sw-45-NOANSWER,11,Goto(s|10) exten => sw-45-ANSWER,10,Goto(s|10) @@ -1071,6 +1115,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_44-46) exten => _sw-46-.,10,Voicemail(u${ext}) exten => _sw-46-.,11,Goto(s|10) +exten => sw-46-,10,Goto(sw-46-.|10) exten => sw-46-NOANSWER,10,Voicemail(u${ext}) exten => sw-46-NOANSWER,11,Goto(s|10) exten => sw-46-ANSWER,10,Goto(s|10) @@ -1095,6 +1140,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_45-47) exten => _sw-47-.,10,Voicemail(u${ext}) exten => _sw-47-.,11,Goto(s|10) +exten => sw-47-,10,Goto(sw-47-.|10) exten => sw-47-NOANSWER,10,Voicemail(u${ext}) exten => sw-47-NOANSWER,11,Goto(s|10) exten => sw-47-ANSWER,10,Goto(s|10) @@ -1119,6 +1165,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_46-48) exten => _sw-48-.,10,Voicemail(u${ext}) exten => _sw-48-.,11,Goto(s|10) +exten => sw-48-,10,Goto(sw-48-.|10) exten => sw-48-NOANSWER,10,Voicemail(u${ext}) exten => sw-48-NOANSWER,11,Goto(s|10) exten => sw-48-ANSWER,10,Goto(s|10) @@ -1143,6 +1190,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_47-49) exten => _sw-49-.,10,Voicemail(u${ext}) exten => _sw-49-.,11,Goto(s|10) +exten => sw-49-,10,Goto(sw-49-.|10) exten => sw-49-NOANSWER,10,Voicemail(u${ext}) exten => sw-49-NOANSWER,11,Goto(s|10) exten => sw-49-ANSWER,10,Goto(s|10) @@ -1167,6 +1215,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_48-50) exten => _sw-50-.,10,Voicemail(u${ext}) exten => _sw-50-.,11,Goto(s|10) +exten => sw-50-,10,Goto(sw-50-.|10) exten => sw-50-NOANSWER,10,Voicemail(u${ext}) exten => sw-50-NOANSWER,11,Goto(s|10) exten => sw-50-ANSWER,10,Goto(s|10) @@ -1191,6 +1240,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_49-51) exten => _sw-51-.,10,Voicemail(u${ext}) exten => _sw-51-.,11,Goto(s|10) +exten => sw-51-,10,Goto(sw-51-.|10) exten => sw-51-NOANSWER,10,Voicemail(u${ext}) exten => sw-51-NOANSWER,11,Goto(s|10) exten => sw-51-ANSWER,10,Goto(s|10) @@ -1215,6 +1265,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_50-52) exten => _sw-52-.,10,Voicemail(u${ext}) exten => _sw-52-.,11,Goto(s|10) +exten => sw-52-,10,Goto(sw-52-.|10) exten => sw-52-NOANSWER,10,Voicemail(u${ext}) exten => sw-52-NOANSWER,11,Goto(s|10) exten => sw-52-ANSWER,10,Goto(s|10) @@ -1239,6 +1290,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_51-53) exten => _sw-53-.,10,Voicemail(u${ext}) exten => _sw-53-.,11,Goto(s|10) +exten => sw-53-,10,Goto(sw-53-.|10) exten => sw-53-NOANSWER,10,Voicemail(u${ext}) exten => sw-53-NOANSWER,11,Goto(s|10) exten => sw-53-ANSWER,10,Goto(s|10) @@ -1263,6 +1315,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_52-54) exten => _sw-54-.,10,Voicemail(u${ext}) exten => _sw-54-.,11,Goto(s|10) +exten => sw-54-,10,Goto(sw-54-.|10) exten => sw-54-NOANSWER,10,Voicemail(u${ext}) exten => sw-54-NOANSWER,11,Goto(s|10) exten => sw-54-ANSWER,10,Goto(s|10) @@ -1287,6 +1340,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_53-55) exten => _sw-55-.,10,Voicemail(u${ext}) exten => _sw-55-.,11,Goto(s|10) +exten => sw-55-,10,Goto(sw-55-.|10) exten => sw-55-NOANSWER,10,Voicemail(u${ext}) exten => sw-55-NOANSWER,11,Goto(s|10) exten => sw-55-ANSWER,10,Goto(s|10) @@ -1311,6 +1365,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_54-56) exten => _sw-56-.,10,Voicemail(u${ext}) exten => _sw-56-.,11,Goto(s|10) +exten => sw-56-,10,Goto(sw-56-.|10) exten => sw-56-NOANSWER,10,Voicemail(u${ext}) exten => sw-56-NOANSWER,11,Goto(s|10) exten => sw-56-ANSWER,10,Goto(s|10) @@ -1335,6 +1390,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_55-57) exten => _sw-57-.,10,Voicemail(u${ext}) exten => _sw-57-.,11,Goto(s|10) +exten => sw-57-,10,Goto(sw-57-.|10) exten => sw-57-NOANSWER,10,Voicemail(u${ext}) exten => sw-57-NOANSWER,11,Goto(s|10) exten => sw-57-ANSWER,10,Goto(s|10) @@ -1359,6 +1415,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_56-58) exten => _sw-58-.,10,Voicemail(u${ext}) exten => _sw-58-.,11,Goto(s|10) +exten => sw-58-,10,Goto(sw-58-.|10) exten => sw-58-NOANSWER,10,Voicemail(u${ext}) exten => sw-58-NOANSWER,11,Goto(s|10) exten => sw-58-ANSWER,10,Goto(s|10) @@ -1383,6 +1440,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_57-59) exten => _sw-59-.,10,Voicemail(u${ext}) exten => _sw-59-.,11,Goto(s|10) +exten => sw-59-,10,Goto(sw-59-.|10) exten => sw-59-NOANSWER,10,Voicemail(u${ext}) exten => sw-59-NOANSWER,11,Goto(s|10) exten => sw-59-ANSWER,10,Goto(s|10) @@ -1407,6 +1465,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_58-60) exten => _sw-60-.,10,Voicemail(u${ext}) exten => _sw-60-.,11,Goto(s|10) +exten => sw-60-,10,Goto(sw-60-.|10) exten => sw-60-NOANSWER,10,Voicemail(u${ext}) exten => sw-60-NOANSWER,11,Goto(s|10) exten => sw-60-ANSWER,10,Goto(s|10) @@ -1431,6 +1490,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_59-61) exten => _sw-61-.,10,Voicemail(u${ext}) exten => _sw-61-.,11,Goto(s|10) +exten => sw-61-,10,Goto(sw-61-.|10) exten => sw-61-NOANSWER,10,Voicemail(u${ext}) exten => sw-61-NOANSWER,11,Goto(s|10) exten => sw-61-ANSWER,10,Goto(s|10) @@ -1455,6 +1515,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_60-62) exten => _sw-62-.,10,Voicemail(u${ext}) exten => _sw-62-.,11,Goto(s|10) +exten => sw-62-,10,Goto(sw-62-.|10) exten => sw-62-NOANSWER,10,Voicemail(u${ext}) exten => sw-62-NOANSWER,11,Goto(s|10) exten => sw-62-ANSWER,10,Goto(s|10) @@ -1479,6 +1540,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_61-63) exten => _sw-63-.,10,Voicemail(u${ext}) exten => _sw-63-.,11,Goto(s|10) +exten => sw-63-,10,Goto(sw-63-.|10) exten => sw-63-NOANSWER,10,Voicemail(u${ext}) exten => sw-63-NOANSWER,11,Goto(s|10) exten => sw-63-ANSWER,10,Goto(s|10) @@ -1503,6 +1565,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_62-64) exten => _sw-64-.,10,Voicemail(u${ext}) exten => _sw-64-.,11,Goto(s|10) +exten => sw-64-,10,Goto(sw-64-.|10) exten => sw-64-NOANSWER,10,Voicemail(u${ext}) exten => sw-64-NOANSWER,11,Goto(s|10) exten => sw-64-ANSWER,10,Goto(s|10) @@ -1527,6 +1590,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_63-65) exten => _sw-65-.,10,Voicemail(u${ext}) exten => _sw-65-.,11,Goto(s|10) +exten => sw-65-,10,Goto(sw-65-.|10) exten => sw-65-NOANSWER,10,Voicemail(u${ext}) exten => sw-65-NOANSWER,11,Goto(s|10) exten => sw-65-ANSWER,10,Goto(s|10) @@ -1551,6 +1615,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_64-66) exten => _sw-66-.,10,Voicemail(u${ext}) exten => _sw-66-.,11,Goto(s|10) +exten => sw-66-,10,Goto(sw-66-.|10) exten => sw-66-NOANSWER,10,Voicemail(u${ext}) exten => sw-66-NOANSWER,11,Goto(s|10) exten => sw-66-ANSWER,10,Goto(s|10) @@ -1575,6 +1640,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_65-67) exten => _sw-67-.,10,Voicemail(u${ext}) exten => _sw-67-.,11,Goto(s|10) +exten => sw-67-,10,Goto(sw-67-.|10) exten => sw-67-NOANSWER,10,Voicemail(u${ext}) exten => sw-67-NOANSWER,11,Goto(s|10) exten => sw-67-ANSWER,10,Goto(s|10) @@ -1599,6 +1665,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_66-68) exten => _sw-68-.,10,Voicemail(u${ext}) exten => _sw-68-.,11,Goto(s|10) +exten => sw-68-,10,Goto(sw-68-.|10) exten => sw-68-NOANSWER,10,Voicemail(u${ext}) exten => sw-68-NOANSWER,11,Goto(s|10) exten => sw-68-ANSWER,10,Goto(s|10) @@ -1623,6 +1690,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_67-69) exten => _sw-69-.,10,Voicemail(u${ext}) exten => _sw-69-.,11,Goto(s|10) +exten => sw-69-,10,Goto(sw-69-.|10) exten => sw-69-NOANSWER,10,Voicemail(u${ext}) exten => sw-69-NOANSWER,11,Goto(s|10) exten => sw-69-ANSWER,10,Goto(s|10) @@ -1647,6 +1715,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_68-70) exten => _sw-70-.,10,Voicemail(u${ext}) exten => _sw-70-.,11,Goto(s|10) +exten => sw-70-,10,Goto(sw-70-.|10) exten => sw-70-NOANSWER,10,Voicemail(u${ext}) exten => sw-70-NOANSWER,11,Goto(s|10) exten => sw-70-ANSWER,10,Goto(s|10) @@ -1671,6 +1740,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_69-71) exten => _sw-71-.,10,Voicemail(u${ext}) exten => _sw-71-.,11,Goto(s|10) +exten => sw-71-,10,Goto(sw-71-.|10) exten => sw-71-NOANSWER,10,Voicemail(u${ext}) exten => sw-71-NOANSWER,11,Goto(s|10) exten => sw-71-ANSWER,10,Goto(s|10) @@ -1695,6 +1765,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_70-72) exten => _sw-72-.,10,Voicemail(u${ext}) exten => _sw-72-.,11,Goto(s|10) +exten => sw-72-,10,Goto(sw-72-.|10) exten => sw-72-NOANSWER,10,Voicemail(u${ext}) exten => sw-72-NOANSWER,11,Goto(s|10) exten => sw-72-ANSWER,10,Goto(s|10) @@ -1719,6 +1790,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_71-73) exten => _sw-73-.,10,Voicemail(u${ext}) exten => _sw-73-.,11,Goto(s|10) +exten => sw-73-,10,Goto(sw-73-.|10) exten => sw-73-NOANSWER,10,Voicemail(u${ext}) exten => sw-73-NOANSWER,11,Goto(s|10) exten => sw-73-ANSWER,10,Goto(s|10) @@ -1743,6 +1815,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_72-74) exten => _sw-74-.,10,Voicemail(u${ext}) exten => _sw-74-.,11,Goto(s|10) +exten => sw-74-,10,Goto(sw-74-.|10) exten => sw-74-NOANSWER,10,Voicemail(u${ext}) exten => sw-74-NOANSWER,11,Goto(s|10) exten => sw-74-ANSWER,10,Goto(s|10) @@ -1767,6 +1840,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_73-75) exten => _sw-75-.,10,Voicemail(u${ext}) exten => _sw-75-.,11,Goto(s|10) +exten => sw-75-,10,Goto(sw-75-.|10) exten => sw-75-NOANSWER,10,Voicemail(u${ext}) exten => sw-75-NOANSWER,11,Goto(s|10) exten => sw-75-ANSWER,10,Goto(s|10) @@ -1791,6 +1865,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten-76) exten => _sw-76-.,10,Voicemail(u${ext}) exten => _sw-76-.,11,Goto(s|10) +exten => sw-76-,10,Goto(sw-76-.|10) exten => sw-76-NOANSWER,10,Voicemail(u${ext}) exten => sw-76-NOANSWER,11,Goto(s|10) exten => sw-76-ANSWER,10,Goto(s|10) @@ -2012,6 +2087,7 @@ exten => s,104,NoOp(End of Extension s) exten => _sw-92-.,10,Set(z=${direct}-2) exten => _sw-92-.,11,Goto(homeline-kids|${z}|1) +exten => sw-92-,10,Goto(sw-92-.|10) exten => sw-92-2,10,Macro(std-priv-exten|Zap/3r1&Zap/5r1|2|25|mtw|telemarket|telemarket) exten => sw-92-2,11,Goto(s|loopback) exten => sw-92-1,10,Macro(std-priv-exten|Zap/6r3&Sip/murf|1|25|mpA(beep)tw|telemarket|telemarket) Index: pbx/ael/ael-test/ref.ael-vtest17 =================================================================== --- pbx/ael/ael-test/ref.ael-vtest17 (revision 84173) +++ pbx/ael/ael-test/ref.ael-vtest17 (working copy) @@ -45,6 +45,7 @@ exten => 83,1,Goto(sw-2-${EXTEN}|10) exten => 83,2,NoOp(Finish switch-extension-2) exten => _sw-2-.,10,Goto(83|2) +exten => sw-2-,10,Goto(sw-2-.|10) exten => _sw-2-[4-7]X,10,Verbose(and this too!) exten => _sw-2-[4-7]X,11,Goto(sw-2-.|10) exten => _sw-2-9X,10,Verbose(handle both 8x and 9x calls) Index: pbx/ael/ael-test/ref.ael-test18 =================================================================== --- pbx/ael/ael-test/ref.ael-test18 (revision 84173) +++ pbx/ael/ael-test/ref.ael-test18 (working copy) @@ -2,11 +2,11 @@ (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_ael.c line:3970 func: pbx_load_module Starting AEL load process. -LOG: lev:2 file:pbx_ael.c line:3977 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3985 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3988 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3990 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3993 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3996 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. -LOG: lev:4 file:ael2_parse line:483 func: main 1 contexts, 5 extensions, 25 priorities +LOG: lev:2 file:pbx_ael.c line:4069 func: pbx_load_module Starting AEL load process. +LOG: lev:2 file:pbx_ael.c line:4076 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4084 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4087 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4089 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4092 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4095 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. +LOG: lev:4 file:ael2_parse line:527 func: main 1 contexts, 7 extensions, 27 priorities Index: pbx/ael/ael-test/ref.ael-ntest10 =================================================================== --- pbx/ael/ael-test/ref.ael-ntest10 (revision 84173) +++ pbx/ael/ael-test/ref.ael-ntest10 (working copy) @@ -5,9 +5,9 @@ (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump) -LOG: lev:2 file:pbx_ael.c line:3978 func: pbx_load_module Starting AEL load process. -LOG: lev:2 file:pbx_ael.c line:3985 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3993 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4069 func: pbx_load_module Starting AEL load process. +LOG: lev:2 file:pbx_ael.c line:4076 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4084 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. LOG: lev:3 file:pbx_ael.c line:2234 func: check_switch_expr Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch. LOG: lev:3 file:pbx_ael.c line:2234 func: check_switch_expr Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch. LOG: lev:3 file:pbx_ael.c line:2234 func: check_switch_expr Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch. @@ -18,7 +18,7 @@ LOG: lev:3 file:pbx_ael.c line:2234 func: check_switch_expr Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch. LOG: lev:3 file:pbx_ael.c line:2234 func: check_switch_expr Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch. LOG: lev:3 file:pbx_ael.c line:2234 func: check_switch_expr Warning: file ./extensions.ael, line 122-122: A default case was automatically added to the switch. -LOG: lev:2 file:pbx_ael.c line:3996 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4087 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); @@ -33,6 +33,7 @@ Executed ast_add_extension2(context=macro-endcall, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-1-${type}|10, 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-., priority=10, 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-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-1-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=10, 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=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:15, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall, rep=0, exten=sw-1-out, priority=12, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael); @@ -47,6 +48,7 @@ Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-3-${type}|10, 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-., 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=sw-3-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-3-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall2, rep=0, exten=sw-3-out2, priority=10, 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=11, 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=12, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael); @@ -66,6 +68,7 @@ Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-8-${type}|10, 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-., priority=10, 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-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-8-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-8-out, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-8-out, priority=11, 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=12, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael); @@ -73,6 +76,7 @@ Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-8-out, priority=14, 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=15, label=(null), callerid=(null), appl=Goto, data=sw-8-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=_sw-5-., priority=10, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael); +Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-5-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-out, priority=10, 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=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall3, rep=0, exten=sw-5-out, priority=12, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael); @@ -89,10 +93,12 @@ Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-13-${type}|10, 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-., priority=10, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael); +Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-13-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-13-out, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-14-${type}|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-13-out, priority=11, 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=12, label=(null), callerid=(null), appl=Goto, data=sw-13-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=_sw-14-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-13-out|11, FREE, registrar=pbx_ael); +Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-14-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-in, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-in, priority=11, 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=12, label=(null), callerid=(null), appl=Goto, data=sw-13-out|11, FREE, registrar=pbx_ael); @@ -100,6 +106,7 @@ Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-14-in, priority=14, 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=15, label=(null), callerid=(null), appl=Goto, data=sw-14-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=_sw-10-., priority=10, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael); +Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-10-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-out, priority=10, 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=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall4, rep=0, exten=sw-10-out, priority=12, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael); @@ -116,10 +123,12 @@ Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-20-${type}|10, 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-., priority=10, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael); +Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-20-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-20-out, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-21-${type}|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-20-out, priority=11, 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=12, label=(null), callerid=(null), appl=Goto, data=sw-20-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=_sw-21-., priority=10, label=(null), callerid=(null), appl=Goto, data=sw-20-out|11, FREE, registrar=pbx_ael); +Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-21-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-in, priority=10, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?11:13, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-in, priority=11, 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=12, label=(null), callerid=(null), appl=Goto, data=sw-20-out|11, FREE, registrar=pbx_ael); @@ -127,6 +136,7 @@ Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-21-in, priority=14, 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=15, label=(null), callerid=(null), appl=Goto, data=sw-21-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=_sw-16-., priority=10, 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-, priority=10, label=(null), callerid=(null), appl=Goto, data=sw-16-.|10, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-in, priority=10, 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=11, label=ptr2, callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael); Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-in, priority=12, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael); @@ -140,9 +150,9 @@ Executed ast_add_extension2(context=macro-endcall5, rep=0, exten=sw-16-out, priority=13, 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=14, 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=15, label=(null), callerid=(null), appl=Goto, data=sw-16-in|10, FREE, registrar=pbx_ael); -LOG: lev:2 file:pbx_ael.c line:3998 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4089 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. Executed ast_merge_contexts_and_delete(); -LOG: lev:2 file:pbx_ael.c line:4001 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4092 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. Executed ast_walk_contexts(); -LOG: lev:2 file:pbx_ael.c line:4004 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. -LOG: lev:4 file:ael2_parse line:523 func: main 7 contexts, 27 extensions, 114 priorities +LOG: lev:2 file:pbx_ael.c line:4095 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. +LOG: lev:4 file:ael2_parse line:527 func: main 7 contexts, 37 extensions, 124 priorities Index: pbx/ael/ael-test/ref.ael-test1 =================================================================== --- pbx/ael/ael-test/ref.ael-test1 (revision 84173) +++ pbx/ael/ael-test/ref.ael-test1 (working copy) @@ -2,14 +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_ael.c line:3978 func: pbx_load_module Starting AEL load process. -LOG: lev:2 file:pbx_ael.c line:3985 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3993 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4069 func: pbx_load_module Starting AEL load process. +LOG: lev:2 file:pbx_ael.c line:4076 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4084 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. LOG: lev:3 file:pbx_ael.c line:2234 func: check_switch_expr Warning: file ./extensions.ael, line 58-58: A default case was automatically added to the switch. LOG: lev:3 file:pbx_ael.c line:937 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_ael.c line:895 func: check_timerange Warning: file ./extensions.ael, line 78-78: The end time (25:00) is out of range! -LOG: lev:2 file:pbx_ael.c line:3996 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3998 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:4001 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:4004 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. -LOG: lev:4 file:ael2_parse line:523 func: main 5 contexts, 14 extensions, 157 priorities +LOG: lev:2 file:pbx_ael.c line:4087 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4089 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4092 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4095 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. +LOG: lev:4 file:ael2_parse line:527 func: main 5 contexts, 16 extensions, 159 priorities Index: pbx/ael/ael-test/ref.ael-test3 =================================================================== --- pbx/ael/ael-test/ref.ael-test3 (revision 84173) +++ pbx/ael/ael-test/ref.ael-test3 (working copy) @@ -2,17 +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_ael.c line:4048 func: pbx_load_module Starting AEL load process. -LOG: lev:2 file:pbx_ael.c line:4055 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4069 func: pbx_load_module Starting AEL load process. +LOG: lev:2 file:pbx_ael.c line:4076 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. LOG: lev:2 file:ael.flex line:654 func: setup_filestack --Read in included file ./include1.ael2, 78 chars LOG: lev:2 file:ael.flex line:654 func: setup_filestack --Read in included file ./include2.ael2, 98 chars LOG: lev:2 file:ael.flex line:654 func: setup_filestack --Read in included file ./include3.ael2, 57 chars LOG: lev:2 file:ael.flex line:654 func: setup_filestack --Read in included file ./include5.ael2, 56 chars LOG: lev:2 file:ael.flex line:654 func: setup_filestack --Read in included file ./include4.ael2, 87 chars LOG: lev:2 file:ael.flex line:654 func: setup_filestack --Read in included file ./telemarket_torture.ael2, 28036 chars -LOG: lev:2 file:pbx_ael.c line:4063 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:4066 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:4068 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:4071 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:4074 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. -LOG: lev:4 file:ael2_parse line:527 func: main 172 contexts, 858 extensions, 2326 priorities +LOG: lev:2 file:pbx_ael.c line:4084 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4087 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4089 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4092 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4095 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. +LOG: lev:4 file:ael2_parse line:527 func: main 172 contexts, 934 extensions, 2402 priorities Index: pbx/ael/ael-test/ref.ael-test5 =================================================================== --- pbx/ael/ael-test/ref.ael-test5 (revision 84173) +++ pbx/ael/ael-test/ref.ael-test5 (working copy) @@ -2,11 +2,11 @@ (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_ael.c line:3803 func: pbx_load_module Starting AEL load process. -LOG: lev:2 file:pbx_ael.c line:3810 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3818 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3821 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3823 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3826 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. -LOG: lev:2 file:pbx_ael.c line:3829 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, 484 priorities +LOG: lev:2 file:pbx_ael.c line:4069 func: pbx_load_module Starting AEL load process. +LOG: lev:2 file:pbx_ael.c line:4076 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4084 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4087 func: pbx_load_module AEL load process: checked config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4089 func: pbx_load_module AEL load process: compiled config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4092 func: pbx_load_module AEL load process: merged config file name './extensions.ael'. +LOG: lev:2 file:pbx_ael.c line:4095 func: pbx_load_module AEL load process: verified config file name './extensions.ael'. +LOG: lev:4 file:ael2_parse line:527 func: main 38 contexts, 91 extensions, 485 priorities Index: pbx/pbx_ael.c =================================================================== --- pbx/pbx_ael.c (revision 84273) +++ pbx/pbx_ael.c (working copy) @@ -2896,7 +2896,7 @@ struct ael_priority *pr; struct ael_priority *for_init, *for_test, *for_inc, *for_loop, *for_end; struct ael_priority *while_test, *while_loop, *while_end; - struct ael_priority *switch_test, *switch_end, *fall_thru; + struct ael_priority *switch_test, *switch_end, *fall_thru, *switch_empty; struct ael_priority *if_test, *if_end, *if_skip, *if_false; #ifdef OLD_RAND_ACTION struct ael_priority *rand_test, *rand_end, *rand_skip; @@ -2909,7 +2909,7 @@ int local_control_statement_count; struct ael_priority *loop_break_save; struct ael_priority *loop_continue_save; - struct ael_extension *switch_case; + struct ael_extension *switch_case,*switch_null; for (p=statement; p; p=p->next) { switch (p->type) { @@ -3300,11 +3300,30 @@ switch_case-> return_target = np2; } } else if (p2->type == PV_DEFAULT) { - default_exists++; /* ok, generate a extension and link it in */ switch_case = new_exten(); switch_case->context = this_context; switch_case->is_switch = 1; + + /* new: the default case intros a pattern with ., which covers ALMOST everything. + but it doesn't cover a NULL pattern. So, we'll define a null extension to match + that goto's the default extension. */ + + default_exists++; + switch_null = new_exten(); + switch_null->context = this_context; + switch_null->is_switch = 1; + switch_empty = new_prio(); + snprintf(buf1,sizeof(buf1),"sw-%d-.|10",local_control_statement_count); + switch_empty->app = strdup("Goto"); + switch_empty->appargs = strdup(buf1); + linkprio(switch_null, switch_empty); + snprintf(buf1,sizeof(buf1),"sw-%d-", local_control_statement_count); + switch_null->name = strdup(buf1); + switch_null->loop_break = exten->loop_break; + switch_null->loop_continue = exten->loop_continue; + linkexten(exten,switch_null); + /* the break/continue locations are inherited from parent */ switch_case->loop_break = exten->loop_break; switch_case->loop_continue = exten->loop_continue; @@ -3314,7 +3333,7 @@ snprintf(new_label,sizeof(new_label),"sw-%s-default-%d", label, local_control_statement_count); - gen_prios(switch_case, new_label, p2->u2.statements, exten, this_context); /* this will link in all the while body statements here */ + gen_prios(switch_case, new_label, p2->u2.statements, exten, this_context); /* this will link in all the default: body statements here */ /* here is where we write code to "fall thru" to the next case... if there is one... */ for (p3=p2->u2.statements; p3; p3=p3->next) {