From: Russell Bryant Date: Thu, 19 Jul 2007 15:59:19 +0000 (+0000) Subject: (closes issue #10210, reported and patched by juggie) X-Git-Tag: 1.6.0-beta1~3^2~2007 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a971b4bfc4fa9141bc43485877c1f3a869507a20;p=thirdparty%2Fasterisk.git (closes issue #10210, reported and patched by juggie) This merges the trunk only part of the patches from this issue. In 1.4, res_agi will issue a warning if you try to use DeadAGI on a channel that is not hung up. Now, in trunk, it just plain won't let you do it. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75930 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/res/res_agi.c b/res/res_agi.c index e5b62fe589..13fe232249 100644 --- a/res/res_agi.c +++ b/res/res_agi.c @@ -2077,8 +2077,11 @@ static int agi_exec_full(struct ast_channel *chan, void *data, int enhanced, int static int agi_exec(struct ast_channel *chan, void *data) { - if (chan->_softhangup) - ast_log(LOG_WARNING, "If you want to run AGI on hungup channels you should use DeadAGI!\n"); + if (ast_check_hangup(chan)) { + ast_log(LOG_ERROR, "If you want to run AGI on hungup channels you should use DeadAGI!\n"); + return 0; + } + return agi_exec_full(chan, data, 0, 0); } @@ -2086,8 +2089,10 @@ static int eagi_exec(struct ast_channel *chan, void *data) { int readformat, res; - if (chan->_softhangup) - ast_log(LOG_WARNING, "If you want to run AGI on hungup channels you should use DeadAGI!\n"); + if (ast_check_hangup(chan)) { + ast_log(LOG_ERROR, "If you want to run AGI on hungup channels you should use DeadAGI!\n"); + return 0; + } readformat = chan->readformat; if (ast_set_read_format(chan, AST_FORMAT_SLINEAR)) { ast_log(LOG_WARNING, "Unable to set channel '%s' to linear mode\n", chan->name); @@ -2104,6 +2109,10 @@ static int eagi_exec(struct ast_channel *chan, void *data) static int deadagi_exec(struct ast_channel *chan, void *data) { + if (!ast_check_hangup(chan)) { + ast_log(LOG_ERROR,"Running DeadAGI on a live channel is not permitted, please use AGI\n"); + return 0; + } return agi_exec_full(chan, data, 0, 1); }