From 66add1d2bac387d3d411649dcb418c74e521fe1e Mon Sep 17 00:00:00 2001 From: murf Date: Tue, 14 Aug 2007 14:32:21 +0000 Subject: Merged revisions 79255 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r79255 | murf | 2007-08-13 11:49:54 -0600 (Mon, 13 Aug 2007) | 1 line This patch fixes bug 10411. I added a new regression test, some regression test cleanups ........ git-svn-id: http://svn.digium.com/svn/asterisk/trunk@79392 f38db490-d61c-443f-a65b-d21fe96a405b --- pbx/pbx_ael.c | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) (limited to 'pbx/pbx_ael.c') diff --git a/pbx/pbx_ael.c b/pbx/pbx_ael.c index 41feb9f84..e9dde83ad 100644 --- a/pbx/pbx_ael.c +++ b/pbx/pbx_ael.c @@ -3697,15 +3697,18 @@ void add_extensions(struct ael_extension *exten) { struct ael_priority *pr; char *label=0; + char realext[AST_MAX_EXTENSION]; if (!exten) { ast_log(LOG_WARNING, "This file is Empty!\n" ); return; } do { struct ael_priority *last = 0; - + + memset(realext, '\0', sizeof(realext)); /* make sure this is properly initialized */ + pbx_substitute_variables_helper(NULL, exten->name, realext, sizeof(realext) - 1); if (exten->hints) { - if (ast_add_extension2(exten->context, 0 /*no replace*/, exten->name, PRIORITY_HINT, NULL, exten->cidmatch, + if (ast_add_extension2(exten->context, 0 /*no replace*/, realext, PRIORITY_HINT, NULL, exten->cidmatch, exten->hints, NULL, ast_free, registrar)) { ast_log(LOG_WARNING, "Unable to add step at priority 'hint' of extension '%s'\n", exten->name); @@ -3785,7 +3788,7 @@ void add_extensions(struct ael_extension *exten) else label = 0; - if (ast_add_extension2(exten->context, 0 /*no replace*/, exten->name, pr->priority_num, (label?label:NULL), exten->cidmatch, + if (ast_add_extension2(exten->context, 0 /*no replace*/, realext, pr->priority_num, (label?label:NULL), exten->cidmatch, app, strdup(appargs), ast_free, registrar)) { ast_log(LOG_WARNING, "Unable to add step at priority '%d' of extension '%s'\n", pr->priority_num, exten->name); @@ -3885,6 +3888,22 @@ void ast_compile_ael2(struct ast_context **local_contexts, struct pval *root) struct ael_extension *exten; struct ael_extension *exten_list = 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) { + case PV_GLOBALS: + /* just VARDEC elements */ + for (p2=p->u1.list; p2; p2=p2->next) { + char buf2[2000]; + snprintf(buf2,sizeof(buf2),"%s=%s", p2->u1.str, p2->u2.val); + pbx_builtin_setvar(NULL, buf2); + } + break; + default: + break; + } + } + for (p=root; p; p=p->next ) { pval *lp; int argc; @@ -3948,12 +3967,7 @@ void ast_compile_ael2(struct ast_context **local_contexts, struct pval *root) break; case PV_GLOBALS: - /* just VARDEC elements */ - for (p2=p->u1.list; p2; p2=p2->next) { - char buf2[2000]; - snprintf(buf2,sizeof(buf2),"%s=%s", p2->u1.str, p2->u2.val); - pbx_builtin_setvar(NULL, buf2); - } + /* already done */ break; case PV_CONTEXT: -- cgit v1.2.3