depth = 0;
}
- if (depth >= 7) {
+ if (depth >= 20) {
ast_log(LOG_ERROR, "Macro(): possible infinite loop detected. Returning early.\n");
LOCAL_USER_REMOVE(u);
return 0;
break;
}
/* don't stop executing extensions when we're in "h" */
- if (chan->_softhangup && strcasecmp(oldexten,"h")) {
- ast_log(LOG_DEBUG, "Extension %s, priority %d returned normally even though call was hung up\n",
- chan->exten, chan->priority);
+ if (chan->_softhangup && strcasecmp(chan->macroexten,"h")) {
+ ast_log(LOG_DEBUG, "Extension %s, macroexten %s, priority %d returned normally even though call was hung up\n",
+ chan->exten, chan->macroexten, chan->priority);
goto out;
}
chan->priority++;
static int handle_getvariable(struct ast_channel *chan, AGI *agi, int argc, char **argv)
{
- char *ret;
+ const char *ret;
char tempstr[1024];
if (argc != 3)
return RESULT_SHOWUSAGE;
/* check if we want to execute an ast_custom_function */
- if (!ast_strlen_zero(argv[2]) && (argv[2][strlen(argv[2]) - 1] == ')')) {
+ if (!ast_strlen_zero(argv[2]) && (argv[2][strlen(argv[2]) - 1] == ')'))
ret = ast_func_read(chan, argv[2], tempstr, sizeof(tempstr));
- } else {
- pbx_retrieve_variable(chan, argv[2], &ret, tempstr, sizeof(tempstr), NULL);
- }
+ else
+ ret = pbx_builtin_getvar_helper(chan, argv[2]);
if (ret)
fdprintf(agi->fd, "200 result=1 (%s)\n", ret);