diff --git a/apps/app_stack.c b/apps/app_stack.c index 20eff2c753..5a8334771c 100644 --- a/apps/app_stack.c +++ b/apps/app_stack.c @@ -448,9 +448,16 @@ static int handle_gosub(struct ast_channel *chan, AGI *agi, int argc, char **arg chan->priority = 0; if ((res = pbx_exec(chan, theapp, gosub_args)) == 0) { + struct ast_pbx *pbx = chan->pbx; + /* Suppress warning about PBX already existing */ + chan->pbx = NULL; ast_agi_fdprintf(chan, agi->fd, "100 result=0 Trying...\n"); ast_pbx_run(chan); ast_agi_fdprintf(chan, agi->fd, "200 result=0 Gosub complete\n"); + if (chan->pbx) { + ast_free(chan->pbx); + } + chan->pbx = pbx; } else { ast_agi_fdprintf(chan, agi->fd, "200 result=%d Gosub failed\n", res); }