Merged revisions 84511 via svnmerge from
authorSteve Murphy <murf@digium.com>
Wed, 3 Oct 2007 14:39:05 +0000 (14:39 +0000)
committerSteve Murphy <murf@digium.com>
Wed, 3 Oct 2007 14:39:05 +0000 (14:39 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r84511 | murf | 2007-10-03 08:23:00 -0600 (Wed, 03 Oct 2007) | 1 line

closes issue #10834 ; where a null input to a switch statement results in a hangup; since switch is implemented with extensions, and the default case is implemented with a '.', and the '.' matches 1 or more remaining characters, the case where 0 characters exist isn't matched, and the extension isn't matched, and the goto fails, and a hangup occurs. Now, when a default case is generated, it also generates a single fixed extension that will match a null input. That extension just does a goto to the default extension for that switch. I played with an alternate solution, where I just tack an extra char onto all the patterns and the goto, but not the default case's pattern. Then even a null input will still have at least one char in it. But it made me nervous, having that extra char in , even if that's a pretty secret and low-level issue.
........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@84512 65c4cc65-6c06-0410-ace0-fbb531ad65f3

pbx/ael/ael-test/ref.ael-ntest10
pbx/ael/ael-test/ref.ael-test1
pbx/ael/ael-test/ref.ael-test18
pbx/ael/ael-test/ref.ael-test19
pbx/ael/ael-test/ref.ael-test3
pbx/ael/ael-test/ref.ael-test5
pbx/ael/ael-test/ref.ael-test8
pbx/ael/ael-test/ref.ael-vtest13
pbx/ael/ael-test/ref.ael-vtest17
res/ael/pval.c

index c47f179..7e43b97 100644 (file)
@@ -5,27 +5,27 @@
 
 
 (You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c  line:1680 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:1687 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1695 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:669 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:pval.c  line:669 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:pval.c  line:669 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:pval.c  line:2281 func: check_switch_expr  Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:669 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:pval.c  line:2281 func: check_switch_expr  Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:669 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:pval.c  line:2281 func: check_switch_expr  Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2281 func: check_switch_expr  Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:669 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:pval.c  line:2281 func: check_switch_expr  Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2281 func: check_switch_expr  Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2281 func: check_switch_expr  Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:669 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:3 file:pval.c  line:2281 func: check_switch_expr  Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2281 func: check_switch_expr  Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2281 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:1698 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:670 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:pval.c  line:670 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:pval.c  line:670 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:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:670 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:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:670 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:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:670 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:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:670 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:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 106-106: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 119-119: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2282 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:931 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);
@@ -43,6 +43,7 @@ Executed ast_add_extension2(context=endcall, rep=0, exten=s, priority=2, label=(
 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-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=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=endcall, rep=0, exten=sw-1-out, priority=10, 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=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:15, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall, rep=0, exten=sw-1-out, priority=12, label=(null), callerid=(null), appl=Gosub, data=endsess,s,1, FREE, registrar=pbx_ael);
@@ -58,6 +59,7 @@ Executed ast_add_extension2(context=endcall2, rep=0, exten=s, priority=2, label=
 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-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=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=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=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=endcall2, rep=0, exten=sw-3-out2, priority=12, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
@@ -78,6 +80,7 @@ Executed ast_add_extension2(context=endcall3, rep=0, exten=s, priority=7, label=
 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-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=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=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=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=endcall3, rep=0, exten=sw-8-out, priority=12, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael);
@@ -85,6 +88,7 @@ Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-8-out, priority=13
 Executed ast_add_extension2(context=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=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=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=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=endcall3, rep=0, exten=sw-5-out, priority=10, 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=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall3, rep=0, exten=sw-5-out, priority=12, label=(null), callerid=(null), appl=Gosub, data=endsess,s,1, FREE, registrar=pbx_ael);
@@ -102,10 +106,12 @@ Executed ast_add_extension2(context=endcall4, rep=0, exten=s, priority=7, label=
 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-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=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=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=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=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=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=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=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=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=endcall4, rep=0, exten=sw-14-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-13-out,11, FREE, registrar=pbx_ael);
@@ -113,6 +119,7 @@ Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-14-in, priority=13
 Executed ast_add_extension2(context=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=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=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=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=endcall4, rep=0, exten=sw-10-out, priority=10, 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=11, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall4, rep=0, exten=sw-10-out, priority=12, label=(null), callerid=(null), appl=Gosub, data=endsess,s,1, FREE, registrar=pbx_ael);
@@ -130,10 +137,12 @@ Executed ast_add_extension2(context=endcall5, rep=0, exten=s, priority=7, label=
 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-., priority=10, label=(null), callerid=(null), appl=Goto, data=s,8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(context=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=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=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=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=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=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=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=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=endcall5, rep=0, exten=sw-21-in, priority=12, label=(null), callerid=(null), appl=Goto, data=sw-20-out,11, FREE, registrar=pbx_ael);
@@ -141,6 +150,7 @@ Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-21-in, priority=13
 Executed ast_add_extension2(context=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=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=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=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=endcall5, rep=0, exten=sw-16-in, priority=10, 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=11, label=ptr2, callerid=(null), appl=GotoIf, data=$[${testnotnull}]?12:14, FREE, registrar=pbx_ael);
 Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-in, priority=12, label=(null), callerid=(null), appl=Gosub, data=endsess,s,1, FREE, registrar=pbx_ael);
@@ -154,9 +164,9 @@ Executed ast_add_extension2(context=endcall5, rep=0, exten=sw-16-out, priority=1
 Executed ast_add_extension2(context=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=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=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:1700 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:933 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:1703 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:936 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:1706 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, 121 priorities
+LOG: lev:2 file:pbx_ael.c  line:939 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, 131 priorities
index 92b2c6b..4b4a866 100644 (file)
@@ -2,18 +2,18 @@
 (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:1680 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:1687 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1695 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:668 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:pval.c  line:668 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:pval.c  line:1358 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:pval.c  line:1358 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:pval.c  line:2280 func: check_switch_expr  Warning: file ./extensions.ael, line 58-58: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:918 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:pval.c  line:876 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:1698 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1700 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1703 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1706 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:521 func: main  5 contexts, 14 extensions, 155 priorities
+LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:670 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:pval.c  line:670 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:pval.c  line:1360 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:pval.c  line:1360 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:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 58-58: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:920 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:pval.c  line:878 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:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:939 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, 157 priorities
index 8e8eb42..a0972f5 100644 (file)
@@ -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 a283b2d..27a322b 100644 (file)
@@ -2,18 +2,18 @@
 (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:1680 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:1687 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1695 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:2296 func: check_context_names  Warning: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69!
-LOG: lev:3 file:pval.c  line:668 func: check_macro_returns  Warning: file ./extensions.ael, line 71-175: The macro std-priv-exten does not end with a return; I will insert one.
-LOG: lev:3 file:pval.c  line:2280 func: check_switch_expr  Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch.
-LOG: lev:3 file:pval.c  line:2422 func: check_pval_item  Warning: file ./extensions.ael, line 312-312: macro call to non-existent funcA! (Not even in the extensions.conf stuff!)
-LOG: lev:3 file:pval.c  line:2422 func: check_pval_item  Warning: file ./extensions.ael, line 313-313: macro call to non-existent funcD! (Not even in the extensions.conf stuff!)
-LOG: lev:3 file:pval.c  line:1342 func: check_goto  Warning: file ./extensions.ael, line 319-319: goto:  Couldn't find goto target test5|s|1, not even in extensions.conf!
-LOG: lev:3 file:pval.c  line:668 func: check_macro_returns  Warning: file ./extensions.ael, line 363-366: The macro dialoutpstn does not end with a return; I will insert one.
-LOG: lev:2 file:pbx_ael.c  line:1698 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1700 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1703 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:1706 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:521 func: main  13 contexts, 51 extensions, 182 priorities
+LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:2298 func: check_context_names  Warning: file ./extensions.ael, line 49-62: The context name (incoming) is also declared in file ./extensions.ael, line 62-69!
+LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 71-175: The macro std-priv-exten does not end with a return; I will insert one.
+LOG: lev:3 file:pval.c  line:2282 func: check_switch_expr  Warning: file ./extensions.ael, line 245-246: A default case was automatically added to the switch.
+LOG: lev:3 file:pval.c  line:2424 func: check_pval_item  Warning: file ./extensions.ael, line 312-312: macro call to non-existent funcA! (Not even in the extensions.conf stuff!)
+LOG: lev:3 file:pval.c  line:2424 func: check_pval_item  Warning: file ./extensions.ael, line 313-313: macro call to non-existent funcD! (Not even in the extensions.conf stuff!)
+LOG: lev:3 file:pval.c  line:1344 func: check_goto  Warning: file ./extensions.ael, line 319-319: goto:  Couldn't find goto target test5|s|1, not even in extensions.conf!
+LOG: lev:3 file:pval.c  line:670 func: check_macro_returns  Warning: file ./extensions.ael, line 363-366: The macro dialoutpstn does not end with a return; I will insert one.
+LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:939 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:527 func: main  13 contexts, 57 extensions, 188 priorities
index 55fc008..8c863bf 100644 (file)
@@ -97,4 +97,4 @@ LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: che
 LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
 LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
 LOG: lev:2 file:pbx_ael.c  line:939 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, 2406 priorities
+LOG: lev:4 file:ael2_parse  line:527 func: main  172 contexts, 934 extensions, 2482 priorities
index d9c4130..de4a6c0 100644 (file)
@@ -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:113 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:120 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:128 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pval.c  line:678 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:pval.c  line:678 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:pval.c  line:678 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_ael.c  line:131 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:133 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:136 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:139 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:499 func: main  38 contexts, 90 extensions, 492 priorities
+LOG: lev:2 file:pbx_ael.c  line:913 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pval.c  line:670 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:pval.c  line:670 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:pval.c  line:670 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_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:939 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, 493 priorities
index e5ce082..1793d2f 100644 (file)
@@ -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:3910 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c  line:3917 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3925 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3928 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3930 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3933 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c  line:3936 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:913 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c  line:920 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:928 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:931 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:933 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:936 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c  line:939 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 da9316d..6d4781f 100644 (file)
@@ -20,6 +20,7 @@ exten => s,6,Return()
 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)
@@ -41,6 +42,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_1-3)
 exten => s,11,Return()
 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)
@@ -66,6 +68,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_2-4)
 exten => s,11,Return()
 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)
@@ -91,6 +94,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_3-5)
 exten => s,11,Return()
 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)
@@ -116,6 +120,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_4-6)
 exten => s,11,Return()
 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)
@@ -141,6 +146,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_5-7)
 exten => s,11,Return()
 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)
@@ -166,6 +172,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_6-8)
 exten => s,11,Return()
 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)
@@ -191,6 +198,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_7-9)
 exten => s,11,Return()
 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)
@@ -216,6 +224,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_8-10)
 exten => s,11,Return()
 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)
@@ -241,6 +250,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_9-11)
 exten => s,11,Return()
 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)
@@ -266,6 +276,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_10-12)
 exten => s,11,Return()
 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)
@@ -291,6 +302,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_11-13)
 exten => s,11,Return()
 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)
@@ -316,6 +328,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_12-14)
 exten => s,11,Return()
 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)
@@ -341,6 +354,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_13-15)
 exten => s,11,Return()
 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)
@@ -366,6 +380,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_14-16)
 exten => s,11,Return()
 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)
@@ -391,6 +406,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_15-17)
 exten => s,11,Return()
 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)
@@ -416,6 +432,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_16-18)
 exten => s,11,Return()
 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)
@@ -441,6 +458,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_17-19)
 exten => s,11,Return()
 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)
@@ -466,6 +484,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_18-20)
 exten => s,11,Return()
 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)
@@ -491,6 +510,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_19-21)
 exten => s,11,Return()
 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)
@@ -516,6 +536,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_20-22)
 exten => s,11,Return()
 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)
@@ -541,6 +562,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_21-23)
 exten => s,11,Return()
 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)
@@ -566,6 +588,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_22-24)
 exten => s,11,Return()
 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)
@@ -591,6 +614,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_23-25)
 exten => s,11,Return()
 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)
@@ -616,6 +640,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_24-26)
 exten => s,11,Return()
 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)
@@ -641,6 +666,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_25-27)
 exten => s,11,Return()
 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)
@@ -666,6 +692,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_26-28)
 exten => s,11,Return()
 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)
@@ -691,6 +718,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_27-29)
 exten => s,11,Return()
 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)
@@ -716,6 +744,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_28-30)
 exten => s,11,Return()
 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)
@@ -741,6 +770,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_29-31)
 exten => s,11,Return()
 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)
@@ -766,6 +796,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_30-32)
 exten => s,11,Return()
 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)
@@ -791,6 +822,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_31-33)
 exten => s,11,Return()
 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)
@@ -816,6 +848,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_32-34)
 exten => s,11,Return()
 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)
@@ -841,6 +874,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_33-35)
 exten => s,11,Return()
 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)
@@ -866,6 +900,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_34-36)
 exten => s,11,Return()
 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)
@@ -891,6 +926,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_35-37)
 exten => s,11,Return()
 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)
@@ -916,6 +952,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_36-38)
 exten => s,11,Return()
 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)
@@ -941,6 +978,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_37-39)
 exten => s,11,Return()
 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)
@@ -966,6 +1004,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_38-40)
 exten => s,11,Return()
 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)
@@ -991,6 +1030,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_39-41)
 exten => s,11,Return()
 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)
@@ -1016,6 +1056,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_40-42)
 exten => s,11,Return()
 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)
@@ -1041,6 +1082,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_41-43)
 exten => s,11,Return()
 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)
@@ -1066,6 +1108,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_42-44)
 exten => s,11,Return()
 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)
@@ -1091,6 +1134,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_43-45)
 exten => s,11,Return()
 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)
@@ -1116,6 +1160,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_44-46)
 exten => s,11,Return()
 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)
@@ -1141,6 +1186,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_45-47)
 exten => s,11,Return()
 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)
@@ -1166,6 +1212,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_46-48)
 exten => s,11,Return()
 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)
@@ -1191,6 +1238,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_47-49)
 exten => s,11,Return()
 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)
@@ -1216,6 +1264,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_48-50)
 exten => s,11,Return()
 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)
@@ -1241,6 +1290,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_49-51)
 exten => s,11,Return()
 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)
@@ -1266,6 +1316,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_50-52)
 exten => s,11,Return()
 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)
@@ -1291,6 +1342,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_51-53)
 exten => s,11,Return()
 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)
@@ -1316,6 +1368,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_52-54)
 exten => s,11,Return()
 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)
@@ -1341,6 +1394,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_53-55)
 exten => s,11,Return()
 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)
@@ -1366,6 +1420,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_54-56)
 exten => s,11,Return()
 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)
@@ -1391,6 +1446,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_55-57)
 exten => s,11,Return()
 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)
@@ -1416,6 +1472,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_56-58)
 exten => s,11,Return()
 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)
@@ -1441,6 +1498,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_57-59)
 exten => s,11,Return()
 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)
@@ -1466,6 +1524,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_58-60)
 exten => s,11,Return()
 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)
@@ -1491,6 +1550,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_59-61)
 exten => s,11,Return()
 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)
@@ -1516,6 +1576,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_60-62)
 exten => s,11,Return()
 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)
@@ -1541,6 +1602,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_61-63)
 exten => s,11,Return()
 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)
@@ -1566,6 +1628,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_62-64)
 exten => s,11,Return()
 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)
@@ -1591,6 +1654,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_63-65)
 exten => s,11,Return()
 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)
@@ -1616,6 +1680,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_64-66)
 exten => s,11,Return()
 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)
@@ -1641,6 +1706,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_65-67)
 exten => s,11,Return()
 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)
@@ -1666,6 +1732,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_66-68)
 exten => s,11,Return()
 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)
@@ -1691,6 +1758,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_67-69)
 exten => s,11,Return()
 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)
@@ -1716,6 +1784,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_68-70)
 exten => s,11,Return()
 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)
@@ -1741,6 +1810,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_69-71)
 exten => s,11,Return()
 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)
@@ -1766,6 +1836,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_70-72)
 exten => s,11,Return()
 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)
@@ -1791,6 +1862,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_71-73)
 exten => s,11,Return()
 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)
@@ -1816,6 +1888,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_72-74)
 exten => s,11,Return()
 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)
@@ -1841,6 +1914,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten_73-75)
 exten => s,11,Return()
 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)
@@ -1866,6 +1940,7 @@ exten => s,10,NoOp(Finish switch-std-priv-exten-76)
 exten => s,11,Return()
 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)
@@ -2091,6 +2166,7 @@ exten => s,102,NoOp(Finish iftime-homeline-93)
 exten => s,103,Background(murphy-homeline-intro1)
 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,Gosub(std-priv-exten\,s\,1(Zap/3r1&Zap/5r1\,2\,25\,mtw\,telemarket\,telemarket))
 exten => sw-92-2,11,Goto(s\,loopback)
 exten => sw-92-1,10,Gosub(std-priv-exten\,s\,1(Zap/6r3&Sip/murf\,1\,25\,mpA(beep)tw\,telemarket\,telemarket))
index 081e37b..bb4204c 100644 (file)
@@ -45,6 +45,7 @@ exten => 82,2,Verbose(Finished 100000 levels deep call!)
 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 960c3ec..b53f9fe 100644 (file)
@@ -3038,7 +3038,7 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
        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;
@@ -3052,7 +3052,7 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
        int first;
        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) {
@@ -3451,11 +3451,30 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
                                                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;
@@ -3465,7 +3484,7 @@ static void gen_prios(struct ael_extension *exten, char *label, pval *statement,
                                        
                                        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) {