automerge commit

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@40253 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Automerge script
2006-08-17 17:04:18 +00:00
parent e6906d738b
commit 1e38d97c40
3 changed files with 17 additions and 6 deletions

View File

@@ -101,8 +101,8 @@ static int macro_exec(struct ast_channel *chan, void *data)
int oldpriority; int oldpriority;
char pc[80], depthc[12]; char pc[80], depthc[12];
char oldcontext[AST_MAX_CONTEXT] = ""; char oldcontext[AST_MAX_CONTEXT] = "";
char *offsets; char *offsets, *s;
int offset, depth; int offset, depth = 0, maxdepth = 7;
int setmacrocontext=0; int setmacrocontext=0;
int autoloopflag, dead = 0; int autoloopflag, dead = 0;
@@ -119,6 +119,11 @@ static int macro_exec(struct ast_channel *chan, void *data)
LOCAL_USER_ADD(u); 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 */ /* Count how many levels deep the rabbit hole goes */
tmp = pbx_builtin_getvar_helper(chan, "MACRO_DEPTH"); tmp = pbx_builtin_getvar_helper(chan, "MACRO_DEPTH");
if (tmp) { if (tmp) {
@@ -127,7 +132,7 @@ static int macro_exec(struct ast_channel *chan, void *data)
depth = 0; depth = 0;
} }
if (depth >= 20) { if (depth >= maxdepth) {
ast_log(LOG_ERROR, "Macro(): possible infinite loop detected. Returning early.\n"); ast_log(LOG_ERROR, "Macro(): possible infinite loop detected. Returning early.\n");
LOCAL_USER_REMOVE(u); LOCAL_USER_REMOVE(u);
return 0; return 0;

View File

@@ -3196,7 +3196,8 @@ int ast_setstate(struct ast_channel *chan, int state)
chan->_state = state; chan->_state = state;
ast_device_state_changed_literal(chan->name); ast_device_state_changed_literal(chan->name);
manager_event(EVENT_FLAG_CALL, "Newstate", manager_event(EVENT_FLAG_CALL,
(oldstate == AST_STATE_DOWN) ? "Newchannel" : "Newstate",
"Channel: %s\r\n" "Channel: %s\r\n"
"State: %s\r\n" "State: %s\r\n"
"CallerID: %s\r\n" "CallerID: %s\r\n"

View File

@@ -44,11 +44,12 @@ static char *builtin_function_cdr_read(struct ast_channel *chan, char *cmd, char
int argc; int argc;
char *argv[2]; char *argv[2];
int recursive = 0; int recursive = 0;
struct ast_cdr *cdr = chan->cdr;
if (ast_strlen_zero(data)) if (ast_strlen_zero(data))
return NULL; return NULL;
if (!chan->cdr) if (!cdr)
return NULL; return NULL;
mydata = ast_strdupa(data); mydata = ast_strdupa(data);
@@ -61,7 +62,11 @@ static char *builtin_function_cdr_read(struct ast_channel *chan, char *cmd, char
recursive = 1; recursive = 1;
} }
ast_cdr_getvar(chan->cdr, argv[0], &ret, buf, len, recursive); /* Find last entry */
while (cdr->next)
cdr = cdr->next;
ast_cdr_getvar(cdr, argv[0], &ret, buf, len, recursive);
return ret; return ret;
} }