Skip to content
Snippets Groups Projects
Commit 8078aea5 authored by Steve Murphy's avatar Steve Murphy
Browse files

In app_macro, changed the previously changed upper recursion depth limit to a...

In app_macro, changed the previously changed upper recursion depth limit to a variable, default of the original val of 7. MACRO_RECURSION is a channel variable that will override the limit, but until I can understand and fix why this limit is neccessary, I am not advertising this variable in the docs.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@40200 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent bd43525f
No related branches found
No related tags found
No related merge requests found
......@@ -112,7 +112,7 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
int oldpriority;
char pc[80], depthc[12];
char oldcontext[AST_MAX_CONTEXT] = "";
int offset, depth = 0;
int offset, depth = 0, maxdepth = 7;
int setmacrocontext=0;
int autoloopflag, dead = 0;
......@@ -129,11 +129,16 @@ static int _macro_exec(struct ast_channel *chan, void *data, int exclusive)
LOCAL_USER_ADD(u);
/* does the user want a deeper rabbit hole? */
s = pbx_builtin_getvar_helper(chan, "MACRO_RECURSION");
if (s)
sscanf(s, "%d", &maxdepth);
/* Count how many levels deep the rabbit hole goes */
s = pbx_builtin_getvar_helper(chan, "MACRO_DEPTH");
if (s)
sscanf(s, "%d", &depth);
if (depth >= 20) {
if (depth >= maxdepth) {
ast_log(LOG_ERROR, "Macro(): possible infinite loop detected. Returning early.\n");
LOCAL_USER_REMOVE(u);
return 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment