[asterisk-commits] murf: branch murf/bug_7598 r38645 - in /team/murf/bug_7598: ./ include/asteri...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Tue Aug 1 08:49:51 MST 2006


Author: murf
Date: Tue Aug  1 10:49:50 2006
New Revision: 38645

URL: http://svn.digium.com/view/asterisk?rev=38645&view=rev
Log:
I hope that I can accurately recount all the little changes
I've made to solve bug 7598; Here is an attempt:

1. I should have done this originally, I guess, but I didn't.
   I put a parent pointer in the pval node, and added code to
   make sure it got set during the parse. This will allow 
   much more general tree traversal algorithms. Somebody in
   the future will notice they are there, and will be momentarily
   grateful they are there. Maybe. In the meantime, I am...

2. I added one more check to the list during the semantic
   check pass. I make sure there are no duplicate labels in the
   incoming code.

3. I included a regression test (test11) to make sure we are
   reporting duplicate labels correctly.

4. I corrected test7 and test3, as a previous mod to not check
   global set commands for unwrapped exprs leave them failing,
   when they really are OK.

5. I included a regression test for bug 7598 (ntest10). It has
   a bunch of macros, with case statements, and gotos and labels
   that would demonstrate the problem.

6. Bug 7598 basically highlighted a gap in the code to handle
   seemlessly the fact that switch constructs are split up into
   separate extensions during compilation. One of the side affects
   is that labels embedded in case/default/pattern statements are
   not in the same extension as they are in the AEL world. So, 
   a goto that specifies such a label has to be modified in the
   compiled code. Several changes were made in pbx_ael.c to
   accomodate the fix:

    a. The process of generating the create_extension/priorities
       to build the dialplan in asterisk had to be modified from
       a sequential process of cycling thru the each extension,
       generating the priorities, and then destroying the data
       for that extension, to one of generating all the extensions
       structures, then doing a pass to fix the extensions in the
       goto's to labels in case statements, then generating the
       asterisk data, then destroying the extension data lists. To
       accomplish this, some functions had to have context arguments
       added, others subtracted. The ael_extension structs had to
       have some fields added, as did the pval structure.

    b. There were several typos that affected how the checks and
       generation worked in macros, that were fixed.

    c. added some printfs to the matching code, then commented
       them out when I got things working. I might have erased them,
       but if I have to debug in this code, it'll be nice to have
       some ready-made code available. I could just hack at it with
       a debugger, but when you've got large complicated trees and
       lots of data, it's easier to sift the output of debug output.

    d. The gen_prios routine is the one that actually builds the 
       extension/priority structures from the parse tree. It has
       some small but important additions to link labels to the pval
       tree, and to mark gotos that will need to be changed. Also,
       the current context is passed down via recursive calls in the
       argument list now, instead of via a global var. Why? it simplifies
       the code a little, as recursive calls don't have to save the context
       state and restore it any more.

    e. add_extensions now takes a context arg, so we could move it to a single
       call after checking/fixing gotos in the extensions. 

    f. attach_exten was added to splice lists into a single big list.

    g. fix_gotos_in_extensions was added, to zip thru the extension lists,
       find gotos that point to labels in cases, free and rebuild the text 
       of the reference to include the correct extension name.

    h. ael2_compile was rearranged to move the calls to add_extensions()
       and destroy_extensions() to outside the processing loop, so we could
       call fix_gotos_in_extensions at the proper moment, when all the extensions
       are defined, with their generated names.

    i. ael_structs.h had the fields "label_in_case", "goto_target", 
       "goto_target_in_case", "compiled_label" added to allow the algorithm to work.
       And, of course, I added "dad" and "prev" pointers to the pval struct to make
       life easier.

I've most likely missed a small detail here or there, but this is most of it.




Added:
    team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/
    team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/extensions.ael   (with props)
    team/murf/bug_7598/pbx/ael/ael-test/ael-test11/
    team/murf/bug_7598/pbx/ael/ael-test/ael-test11/extensions.ael   (with props)
    team/murf/bug_7598/pbx/ael/ael-test/ref.ael-ntest10   (with props)
    team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test11   (with props)
Modified:
    team/murf/bug_7598/   (props changed)
    team/murf/bug_7598/include/asterisk/ael_structs.h
    team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test3
    team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test7
    team/murf/bug_7598/pbx/ael/ael.tab.c
    team/murf/bug_7598/pbx/ael/ael.y
    team/murf/bug_7598/pbx/pbx_ael.c

Propchange: team/murf/bug_7598/
------------------------------------------------------------------------------
    automerge = youbetcha

Modified: team/murf/bug_7598/include/asterisk/ael_structs.h
URL: http://svn.digium.com/view/asterisk/team/murf/bug_7598/include/asterisk/ael_structs.h?rev=38645&r1=38644&r2=38645&view=diff
==============================================================================
--- team/murf/bug_7598/include/asterisk/ael_structs.h (original)
+++ team/murf/bug_7598/include/asterisk/ael_structs.h Tue Aug  1 10:49:50 2006
@@ -24,34 +24,34 @@
 
 typedef enum 
 {
-	PV_WORD, /* an ident, string, name, label, etc. A user-supplied string. */
-	PV_MACRO,
-	PV_CONTEXT,
-	PV_MACRO_CALL,
-	PV_APPLICATION_CALL,
-	PV_CASE,
-	PV_PATTERN,
-	PV_DEFAULT,
-	PV_CATCH,
-	PV_SWITCHES,
-	PV_ESWITCHES,
-	PV_INCLUDES,
-	PV_STATEMENTBLOCK,
-	PV_VARDEC, /* you know, var=val; */
-	PV_GOTO,
-	PV_LABEL,
-	PV_FOR,
-	PV_WHILE,
-	PV_BREAK,
-	PV_RETURN,
-	PV_CONTINUE,
-	PV_IF,
-	PV_IFTIME,
-	PV_RANDOM,
-	PV_SWITCH,
-	PV_EXTENSION,
-	PV_IGNOREPAT,
-	PV_GLOBALS,
+	PV_WORD, /* an ident, string, name, label, etc. A user-supplied string. */ /* 0 */
+	PV_MACRO,             /* 1 */
+	PV_CONTEXT,           /* 2 */
+	PV_MACRO_CALL,        /* 3 */
+	PV_APPLICATION_CALL,  /* 4 */
+	PV_CASE,              /* 5 */
+	PV_PATTERN,           /* 6 */
+	PV_DEFAULT,           /* 7 */
+	PV_CATCH,             /* 8 */
+	PV_SWITCHES,          /* 9 */
+	PV_ESWITCHES,         /* 10 */
+	PV_INCLUDES,          /* 11 */
+	PV_STATEMENTBLOCK,    /* 12 */
+	PV_VARDEC, /* you know, var=val; */  /* 13 */
+	PV_GOTO,              /* 14 */
+	PV_LABEL,             /* 15 */
+	PV_FOR,               /* 16 */
+	PV_WHILE,             /* 17 */
+	PV_BREAK,             /* 18 */
+	PV_RETURN,            /* 19 */
+	PV_CONTINUE,          /* 20 */
+	PV_IF,                /* 21 */
+	PV_IFTIME,            /* 22 */
+	PV_RANDOM,            /* 23 */
+	PV_SWITCH,            /* 24 */
+	PV_EXTENSION,         /* 25 */
+	PV_IGNOREPAT,         /* 26 */
+	PV_GLOBALS,           /* 27 */
 
 } pvaltype;
 
@@ -88,7 +88,8 @@
 		struct pval *statements; /* used in case, default, catch, while's statement, CONTEXT elements, GLOBALS */
 		char *val;  /* used in VARDEC */
 		char *for_test; /* used in FOR */
-		
+		int label_in_case; /* a boolean for LABELs */
+		struct pval *goto_target;  /* used in GOTO */
 	} u2;
 	
 	union
@@ -98,6 +99,8 @@
 		struct pval *macro_statements; /* used in MACRO */
 		int abstract;  /* used for context */
 		char *hints; /* used in EXTENSION */
+		int goto_target_in_case; /* used in GOTO */
+		struct ael_extension *compiled_label;
 	} u3;
 	
 	union
@@ -106,11 +109,11 @@
 		int regexten;                /* used in EXTENSION */
 	} u4;
 	
-	
 	struct pval *next; /* the pval at the end of this ptr will ALWAYS be of the same type as this one! 
 						  EXCEPT for objects of the different types, that are in the same list, like contexts & macros, etc */
 	
-	
+	struct pval *dad; /* the 'container' of this struct instance */
+	struct pval *prev; /* the opposite of the 'next' pointer */
 } ;
 
 
@@ -174,6 +177,8 @@
 	char *hints;
 	int regexten;
 	
+	struct ast_context *context;
+	
 	struct ael_priority *plist;
 	struct ael_priority *plist_last;
 	struct ael_extension *next_exten;

Added: team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/extensions.ael
URL: http://svn.digium.com/view/asterisk/team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/extensions.ael?rev=38645&view=auto
==============================================================================
--- team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/extensions.ael (added)
+++ team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/extensions.ael Tue Aug  1 10:49:50 2006
@@ -1,0 +1,131 @@
+macro endsess()
+{
+	NoOp(hithere);
+}
+
+macro nullchk(type)
+{
+	NoOp(${type} is this);
+}
+
+macro endcall(type) {
+  switch(${type}) {
+    case out:
+      &nullchk(callid);
+      if(${testnotnull}) {
+        &endsess();
+        goto ptr1 ; // <-- goto call to valid label
+      }
+      else {
+ptr1: // <-- valid label
+        Softhangup(${CHANNEL});
+        break ;
+      }
+    Noop(esac) ;
+  }
+}
+
+macro endcall2(type) {
+  switch(${type}) {
+    case out:
+      &nullchk(callid);
+      if(${testnotnull}) {
+        &endsess();
+        goto ptr1 ; // <-- goto call to valid label
+      }
+	case out2:
+      {
+ptr1: // <-- valid label
+        Softhangup(${CHANNEL});
+        break ;
+      }
+    Noop(esac) ;
+  }
+}
+
+macro endcall3(type) {
+  switch(${type}) {
+    case out:
+      &nullchk(callid);
+      if(${testnotnull}) {
+        &endsess();
+        goto ptr1 ; // <-- goto call to valid label
+      }
+    Noop(esac) ;
+  }
+  if(${testnotnull}) {
+	goto ptr1;
+  }
+  switch(${type}) {
+	case out:
+      if(${testnotnull}) {
+ptr1: // <-- valid label
+        Softhangup(${CHANNEL});
+        break ;
+      }
+    Noop(esac) ;
+  }
+}
+
+macro endcall4(type) {
+  switch(${type}) {
+    case out:
+      &nullchk(callid);
+      if(${testnotnull}) {
+        &endsess();
+        goto ptr1 ; // <-- goto call to valid label
+      }
+    Noop(esac) ;
+  }
+  if(${testnotnull}) {
+	goto ptr1;
+  }
+  switch(${type}) {
+	case out:
+	  switch(${type})
+	  {
+		case in:
+      	 if(${testnotnull}) {
+ptr1: // <-- valid label
+             Softhangup(${CHANNEL});
+             break ;
+      	 }
+         Noop(esac) ;
+	  }
+   }
+}
+
+macro endcall5(type) {
+  switch(${type}) {
+    case out:
+      &nullchk(callid);
+      if(${testnotnull}) {
+        &endsess();
+        goto ptr1 ; // <-- goto call to valid label
+      }
+    case in:
+      &nullchk(callid);
+	ptr2:
+      if(${testnotnull}) {
+        &endsess();
+        goto ptr1 ; // <-- goto call to valid label
+      }
+    Noop(esac) ;
+  }
+  if(${testnotnull}) {
+	goto ptr1;
+  }
+  switch(${type}) {
+	case out:
+	  switch(${type})
+	  {
+		case in:
+      	 if(${testnotnull}) {
+ptr1: // <-- valid label
+             Softhangup(${CHANNEL});
+             break ;
+      	 }
+         Noop(esac) ;
+	  }
+   }
+}

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/extensions.ael
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/extensions.ael
------------------------------------------------------------------------------
    svn:keywords = Author Id Date Revision

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ael-ntest10/extensions.ael
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: team/murf/bug_7598/pbx/ael/ael-test/ael-test11/extensions.ael
URL: http://svn.digium.com/view/asterisk/team/murf/bug_7598/pbx/ael/ael-test/ael-test11/extensions.ael?rev=38645&view=auto
==============================================================================
--- team/murf/bug_7598/pbx/ael/ael-test/ael-test11/extensions.ael (added)
+++ team/murf/bug_7598/pbx/ael/ael-test/ael-test11/extensions.ael Tue Aug  1 10:49:50 2006
@@ -1,0 +1,56 @@
+context test1
+{
+	s => 
+		{
+			goto lab1;
+			if( ${testnotnull} )
+			{
+				lab1:
+				NoOp(hello);
+			}
+			else
+			{
+				lab1:
+				MoOp(goodbye);
+			}
+		}
+
+	1 =>
+		{
+			lab1:
+			NoOp(This one is OK.);
+		}
+}
+
+macro endcall5(type) {
+  switch(${type}) {
+    case out:
+      if(${testnotnull}) {
+        NoOp(whoosh);
+        goto ptr1 ; // <-- goto call to valid label
+      }
+    case in:
+	ptr1:  // The First label is the valid one...
+      if(${testnotnull}) {
+        NoOp(wow);
+        goto ptr1 ; // <-- goto call to valid label
+      }
+    Noop(esac) ;
+  }
+  if(${testnotnull}) {
+	goto ptr1;
+  }
+  switch(${type}) {
+	case out:
+	  switch(${type})
+	  {
+		case in:
+      	 if(${testnotnull}) {
+ptr1: // <-- duplicate label (macros are about the equiv of an extension)
+             Softhangup(${CHANNEL});
+             break ;
+      	 }
+         Noop(esac) ;
+	  }
+   }
+}

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ael-test11/extensions.ael
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ael-test11/extensions.ael
------------------------------------------------------------------------------
    svn:keywords = Author Id Date Revision

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ael-test11/extensions.ael
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: team/murf/bug_7598/pbx/ael/ael-test/ref.ael-ntest10
URL: http://svn.digium.com/view/asterisk/team/murf/bug_7598/pbx/ael/ael-test/ref.ael-ntest10?rev=38645&view=auto
==============================================================================
--- team/murf/bug_7598/pbx/ael/ael-test/ref.ael-ntest10 (added)
+++ team/murf/bug_7598/pbx/ael/ael-test/ref.ael-ntest10 Tue Aug  1 10:49:50 2006
@@ -1,0 +1,133 @@
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+
+(You can use the -n option if you aren't interested in seeing all the instructions generated by the compiler)
+
+Executed ast_cli_register_multiple();
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3732 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3739 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3742 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3745 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+Executed ast_context_create(conts, name=macro-endsess, registrar=pbx_ael);
+Executed ast_context_create(conts, name=macro-nullchk, registrar=pbx_ael);
+Executed ast_context_create(conts, name=macro-endcall, registrar=pbx_ael);
+Executed ast_context_create(conts, name=macro-endcall2, registrar=pbx_ael);
+Executed ast_context_create(conts, name=macro-endcall3, registrar=pbx_ael);
+Executed ast_context_create(conts, name=macro-endcall4, registrar=pbx_ael);
+Executed ast_context_create(conts, name=macro-endcall5, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=NoOp, data=hithere, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=NoOp, data=${type} is this, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-1-${type}|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, 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(con, rep=0, exten=sw-1-out, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-1-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:6, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-1-out, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-1-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-1-out|ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-1-out, priority=5, label=(null), callerid=(null), appl=Goto, data=8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-1-out, priority=6, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-1-out, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-1-out, priority=8, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall-out-1-2, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-1-out, priority=9, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-1-out, priority=10, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-3-${type}|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, 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(con, rep=0, exten=sw-3-out2, priority=1, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-3-out2, priority=2, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-3-out2, priority=3, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-3-out2, priority=4, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-3-out, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-3-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-3-out, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-3-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-3-out2|ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-3-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall2-out-3-4, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-3-out, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-3-out2|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-5-${type}|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall3-5, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-8-out|ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall3-7, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-8-${type}|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, 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(con, rep=0, exten=sw-8-out, priority=1, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?2:4, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-8-out, priority=2, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-8-out, priority=3, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-8-out, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall3-out-8-9, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-8-out, priority=5, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-8-out, priority=6, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-5-out, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-5-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-5-out, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-5-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-8-out|ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-5-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall3-out-5-6, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-5-out, priority=6, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-5-out, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-10-${type}|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall4-10, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-14-in|ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall4-12, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-13-${type}|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, 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(con, rep=0, exten=sw-13-out, priority=1, label=(null), callerid=(null), appl=Goto, data=sw-14-${type}|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-13-out, priority=2, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall4-out-13-14, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-13-out, priority=3, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-14-in, priority=1, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?2:4, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-14-in, priority=2, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-14-in, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-13-out|2, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-14-in, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall4-out-13-in-14-15, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-14-in, priority=5, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-14-in, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-13-out|2, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-10-out, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-10-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-10-out, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-10-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-14-in|ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-10-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall4-out-10-11, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-10-out, priority=6, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-10-out, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=1, label=(null), callerid=(null), appl=Set, data=type=${ARG1}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=2, label=(null), callerid=(null), appl=Goto, data=sw-16-${type}|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=3, label=(null), callerid=(null), appl=NoOp, data=Finish switch-endcall5-16, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=4, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?5:6, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=5, label=(null), callerid=(null), appl=Goto, data=sw-21-in|ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=6, label=(null), callerid=(null), appl=NoOp, data=Finish if-endcall5-19, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=s, priority=7, label=(null), callerid=(null), appl=Goto, data=sw-20-${type}|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, 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(con, rep=0, exten=sw-20-out, priority=1, label=(null), callerid=(null), appl=Goto, data=sw-21-${type}|1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-20-out, priority=2, label=(null), callerid=(null), appl=NoOp, data=Finish switch-sw-endcall5-out-20-21, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-20-out, priority=3, label=(null), callerid=(null), appl=Goto, data=s|8, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-21-in, priority=1, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?2:4, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-21-in, priority=2, label=ptr1, callerid=(null), appl=Softhangup, data=${CHANNEL}, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-21-in, priority=3, label=(null), callerid=(null), appl=Goto, data=sw-20-out|2, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-21-in, priority=4, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-sw-endcall5-out-20-in-21-22, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-21-in, priority=5, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-21-in, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-20-out|2, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-in, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-in, priority=2, label=ptr2, callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-in, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-in, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-21-in|ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-in, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall5-in-16-18, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-in, priority=6, label=(null), callerid=(null), appl=Noop, data=esac, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-in, priority=7, label=(null), callerid=(null), appl=Goto, data=s|3, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-out, priority=1, label=(null), callerid=(null), appl=Macro, data=nullchk|callid, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-out, priority=2, label=(null), callerid=(null), appl=GotoIf, data=$[${testnotnull}]?3:5, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-out, priority=3, label=(null), callerid=(null), appl=Macro, data=endsess, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-out, priority=4, label=(null), callerid=(null), appl=Goto, data=sw-21-in|ptr1, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-out, priority=5, label=(null), callerid=(null), appl=NoOp, data=Finish if-sw-endcall5-out-16-17, FREE, registrar=pbx_ael);
+Executed ast_add_extension2(con, rep=0, exten=sw-16-out, priority=6, label=(null), callerid=(null), appl=Goto, data=sw-16-in|1, FREE, registrar=pbx_ael);
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3747 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+Executed ast_merge_contexts_and_delete();
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3750 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+Executed ast_walk_contexts();
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3753 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:253 func: main  7 contexts, 17 extensions, 104 priorities
+Executed ast_unregister_file_version();
+Executed ast_unregister_file_version();
+Executed ast_unregister_file_version();
+Executed ast_unregister_file_version();

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ref.ael-ntest10
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ref.ael-ntest10
------------------------------------------------------------------------------
    svn:keywords = Author Id Date Revision

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ref.ael-ntest10
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test11
URL: http://svn.digium.com/view/asterisk/team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test11?rev=38645&view=auto
==============================================================================
--- team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test11 (added)
+++ team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test11 Tue Aug  1 10:49:50 2006
@@ -1,0 +1,11 @@
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3732 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3739 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3742 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:4 file:../pbx/pbx_ael.c  line:1041 func: check_label  Error: file ./extensions.ael, line 13-13: Duplicate label lab1! Previously defined at file ./extensions.ael, line 8.
+LOG: lev:4 file:../pbx/pbx_ael.c  line:1041 func: check_label  Error: file ./extensions.ael, line 49-49: Duplicate label ptr1! Previously defined at file ./extensions.ael, line 33.
+LOG: lev:4 file:../pbx/pbx_ael.c  line:3755 func: pbx_load_module  Sorry, but 0 syntax errors and 2 semantic errors were detected. It doesn't make sense to compile.
+LOG: lev:4 file:ael2_parse  line:253 func: main  0 contexts, 0 extensions, 0 priorities

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test11
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test11
------------------------------------------------------------------------------
    svn:keywords = Author Id Date Revision

Propchange: team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test11
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test3
URL: http://svn.digium.com/view/asterisk/team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test3?rev=38645&r1=38644&r2=38645&view=diff
==============================================================================
--- team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test3 (original)
+++ team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test3 Tue Aug  1 10:49:50 2006
@@ -1,18 +1,18 @@
 Executed ast_register_file_version();
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3428 func: pbx_load_module  Starting AEL load process.
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3435 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file ./include1.ael2, 78 chars
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file ./include2.ael2, 98 chars
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file ./include3.ael2, 57 chars
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file ./include5.ael2, 56 chars
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file ./include4.ael2, 87 chars
-LOG: lev:2 file:ael.flex  line:467 func: ael_yylex    --Read in included file /etc/asterisk/telemarket_torture.ael2, 28036 chars
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3438 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:../pbx/pbx_ael.c  line:2186 func: check_pval_item  Warning: file ./extensions.ael, line 5-5: expression Console/dsp has operators, but no variables. Interesting...
-LOG: lev:3 file:../pbx/pbx_ael.c  line:2186 func: check_pval_item  Warning: file ./extensions.ael, line 8-8: expression "Joe-Worker" has operators, but no variables. Interesting...
-LOG: lev:3 file:../pbx/pbx_ael.c  line:2186 func: check_pval_item  Warning: file ./extensions.ael, line 10-10: expression Zap/6  has operators, but no variables. Interesting...
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3441 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3443 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3446 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
-LOG: lev:2 file:../pbx/pbx_ael.c  line:3449 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
-LOG: lev:4 file:ael2_parse  line:261 func: main  172 contexts, 858 extensions, 2326 priorities
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+Executed ast_register_file_version();
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3732 func: pbx_load_module  Starting AEL load process.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3739 func: pbx_load_module  AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./include1.ael2, 78 chars
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./include2.ael2, 98 chars
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./include3.ael2, 57 chars
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./include5.ael2, 56 chars
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file ./include4.ael2, 87 chars
+LOG: lev:2 file:ael.flex  line:422 func: ael_yylex    --Read in included file /etc/asterisk/telemarket_torture.ael2, 28036 chars
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3742 func: pbx_load_module  AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3745 func: pbx_load_module  AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3747 func: pbx_load_module  AEL load process: compiled config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3750 func: pbx_load_module  AEL load process: merged config file name './extensions.ael'.
+LOG: lev:2 file:../pbx/pbx_ael.c  line:3753 func: pbx_load_module  AEL load process: verified config file name './extensions.ael'.
+LOG: lev:4 file:ael2_parse  line:253 func: main  172 contexts, 858 extensions, 2326 priorities

Modified: team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test7
URL: http://svn.digium.com/view/asterisk/team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test7?rev=38645&r1=38644&r2=38645&view=diff
==============================================================================
--- team/murf/bug_7598/pbx/ael/ael-test/ref.ael-test7 (original)

[... 2061 lines stripped ...]


More information about the asterisk-commits mailing list