(closes issue #13236)

Reported by: korihor

Wow, this one was a challenge!

I regrouped and ran a new strategy for
setting the ~~MACRO~~ value; I set it once
per extension, up near the top. It is only
set if there is a switch in the extension.

So, I had to put in a chunk of code to detect
a switch in the pval tree.

I moved the code to insert the set of ~~exten~~
up to the beginning of the gen_prios routine, 
instead of down in the switch code.

I learned that I have to push the detection
of the switches down into the code, so everywhere
I create a new exten in gen_prios, I make sure
to pass onto it the values of the mother_exten
first, and the exten next.

I had to add a couple fields to the exten
struct to accomplish this, in the ael_structs.h
file. The checked field makes it so we don't
repeat the switch search if it's been done.

I also updated the regressions.



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@136726 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Steve Murphy
2008-08-08 00:15:34 +00:00
parent 31446d74a7
commit 195fe34304
6 changed files with 640 additions and 322 deletions

View File

@@ -178,7 +178,8 @@ struct ael_extension
char *hints;
int regexten;
int is_switch;
int has_switch;
int has_switch; /* set if a switch exists in the extension */
int checked_switch; /* set if we checked for a switch in the extension -- so we don't have to do it again */
struct ast_context *context;