diff options
Diffstat (limited to 'res/res_agi.c')
-rw-r--r-- | res/res_agi.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/res/res_agi.c b/res/res_agi.c index 24dd5d0bb..7eebf7c61 100644 --- a/res/res_agi.c +++ b/res/res_agi.c @@ -1828,8 +1828,7 @@ static int handle_getvariable(struct ast_channel *chan, AGI *agi, int argc, char static int handle_getvariablefull(struct ast_channel *chan, AGI *agi, int argc, char **argv) { - char tmp[4096]; - struct ast_channel *chan2=NULL; + struct ast_channel *chan2 = NULL; if (argc != 4 && argc != 5) { return RESULT_SHOWUSAGE; @@ -1842,8 +1841,14 @@ static int handle_getvariablefull(struct ast_channel *chan, AGI *agi, int argc, } if (chan2) { - pbx_substitute_variables_helper(chan2, argv[3], tmp, sizeof(tmp) - 1); - ast_agi_send(agi->fd, chan, "200 result=1 (%s)\n", tmp); + struct ast_str *str = ast_str_create(16); + if (!str) { + ast_agi_send(agi->fd, chan, "200 result=0\n"); + return RESULT_SUCCESS; + } + ast_str_substitute_variables(&str, 0, chan2, argv[3]); + ast_agi_send(agi->fd, chan, "200 result=1 (%s)\n", ast_str_buffer(str)); + ast_free(str); } else { ast_agi_send(agi->fd, chan, "200 result=0\n"); } |