From: Joshua Colp Date: Thu, 30 Aug 2007 14:42:41 +0000 (+0000) Subject: (closes issue #10603) X-Git-Tag: 1.6.0-beta1~3^2~1570 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=56e74f0dded99f7dbe54a6df84fc385ef83f9608;p=thirdparty%2Fasterisk.git (closes issue #10603) Reported by: jmls Patches: pbx.diff uploaded by jmls (license 141) Add REASON dialplan variable for when an originated call fails and the failed extension is executed. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81372 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/CHANGES b/CHANGES index 8ca22c8558..97d53889c4 100644 --- a/CHANGES +++ b/CHANGES @@ -272,3 +272,5 @@ Miscellaneous * The device state functionality in the Local channel driver has been updated to indicate INUSE or NOT_INUSE when a Local channel is being used as opposed to just UNKNOWN if the extension exists. + * When originating a call using AMI or pbx_spool that fails the reason for failure + will now be available in the failed extension using the REASON dialplan variable. diff --git a/main/pbx.c b/main/pbx.c index c43faa5858..666f334588 100644 --- a/main/pbx.c +++ b/main/pbx.c @@ -5053,10 +5053,13 @@ int ast_pbx_outgoing_exten(const char *type, int format, void *data, int timeout if (ast_exists_extension(chan, context, "failed", 1, NULL)) { chan = ast_channel_alloc(0, AST_STATE_DOWN, 0, 0, "", "", "", 0, "OutgoingSpoolFailed"); if (chan) { + char failed_reason[4] = ""; if (!ast_strlen_zero(context)) ast_copy_string(chan->context, context, sizeof(chan->context)); set_ext_pri(chan, "failed", 1); ast_set_variables(chan, vars); + snprintf(failed_reason, sizeof(failed_reason), "%d", *reason); + pbx_builtin_setvar_helper(chan, "REASON", failed_reason); if (account) ast_cdr_setaccount(chan, account); ast_pbx_run(chan);