res_ael: Create consistent label names across reloads
authorSean Bright <sean.bright@gmail.com>
Thu, 11 Apr 2019 20:48:49 +0000 (16:48 -0400)
committerSean Bright <sean.bright@gmail.com>
Thu, 11 Apr 2019 20:53:53 +0000 (14:53 -0600)
Reset the internal counter that the AEL2 compiler uses for unique label
names before compiling. This keeps dialplan labels consistent across
reloads assuming the AEL2 has not changed.

ASTERISK-17799 #close
Reported by: Kirill Katsnelson

Change-Id: I30b3cc887d1ee0644d3f341e2fef16f525d7fae5

res/ael/pval.c

index f927077..095cb88 100644 (file)
@@ -2924,7 +2924,7 @@ void ael2_semantic_check(pval *item, int *arg_errs, int *arg_warns, int *arg_not
 /* "CODE" GENERATOR -- Convert the AEL representation to asterisk extension language */
 /* =============================================================================================== */
 
-static int control_statement_count = 0;
+static int control_statement_count;
 
 struct ael_priority *new_prio(void)
 {
@@ -4427,6 +4427,9 @@ int ast_compile_ael2(struct ast_context **local_contexts, struct ast_hashtab *lo
        struct ael_extension *exten;
        struct ael_extension *exten_list = 0;
 
+       /* Reset the counter so that we get consistent labels between reloads */
+       control_statement_count = 0;
+
        for (p=root; p; p=p->next ) { /* do the globals first, so they'll be there
                                                                         when we try to eval them */
                switch (p->type) {