summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTilghman Lesher <tilghman@meg.abyt.es>2008-07-28 16:49:29 +0000
committerTilghman Lesher <tilghman@meg.abyt.es>2008-07-28 16:49:29 +0000
commit75d38f60241bc870780e80c3d74474f9d4682e75 (patch)
treed0c3687531dad36fb006d20b1d3e1e496d01d965
parent6291cd19bff749a1492b4b5601ed814b886f11c4 (diff)
Change SendImage() to output a more consistent status variable.
(closes issue #13134) Reported by: eliel Patches: app_image.c.patch uploaded by eliel (license 64) UPGRADE.patch uploaded by eliel (license 64) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@134088 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r--CHANGES4
-rw-r--r--UPGRADE.txt7
-rw-r--r--apps/app_image.c24
3 files changed, 24 insertions, 11 deletions
diff --git a/CHANGES b/CHANGES
index de3374628..27813f0bc 100644
--- a/CHANGES
+++ b/CHANGES
@@ -102,6 +102,10 @@ Application Changes
* The Dial() application no longer copies the language used by the caller to the callee's
channel. If you desire for the caller's channel's language to be used for file playback
to the callee, then the file specified may be prepended with "${CHANNEL(language)}/" .
+ * SendImage() no longer hangs up the channel on error; instead, it sets the
+ status variable SENDIMAGESTATUS to one of 'SUCCESS', 'FAILURE', or
+ 'UNSUPPORTED'. This change makes SendImage() more consistent with other
+ applications.
SIP Changes
-----------
diff --git a/UPGRADE.txt b/UPGRADE.txt
index 5db13ff4e..272db32fb 100644
--- a/UPGRADE.txt
+++ b/UPGRADE.txt
@@ -97,6 +97,13 @@ Voicemail:
Applications:
+* SendImage() no longer hangs up the channel on transmission error or on
+ another type of error; in those cases, a FAILURE status is stored in
+ SENDIMAGESTATUS and dialplan execution continues. The possible return values
+ stored in SENDIMAGESTATUS are: SUCCESS, FAILURE, and UNSUPPORTED. ('OK' has
+ been replaced with 'SUCCESS', and 'NOSUPPORT' has been replaced with
+ 'UNSUPPORTED'). This change makes the SendImage application more consistent
+ with other applications.
* ChanIsAvail() now has a 't' option, which allows the specified device
to be queried for state without consulting the channel drivers. This
performs mostly a 'ChanExists' sort of function.
diff --git a/apps/app_image.c b/apps/app_image.c
index 1e5b0c857..ac44495e3 100644
--- a/apps/app_image.c
+++ b/apps/app_image.c
@@ -39,16 +39,15 @@ static char *synopsis = "Send an image file";
static char *descrip =
" SendImage(filename): Sends an image on a channel.\n"
-"If the channel supports image transport but the image send fails, the channel\n"
-"will be hung up. Otherwise, the dialplan continues execution. This\n"
-"application sets the following channel variable upon completion:\n"
-" SENDIMAGESTATUS The status is the result of the attempt, one of:\n"
-" OK | NOSUPPORT \n";
+"Result of transmission will be stored in SENDIMAGESTATUS\n"
+"channel variable:\n"
+" SUCCESS Transmission succeeded\n"
+" FAILURE Transmission failed\n"
+" UNSUPPORTED Image transmission not supported by channel\n";
static int sendimage_exec(struct ast_channel *chan, void *data)
{
- int res = 0;
if (ast_strlen_zero(data)) {
ast_log(LOG_WARNING, "SendImage requires an argument (filename)\n");
@@ -57,14 +56,17 @@ static int sendimage_exec(struct ast_channel *chan, void *data)
if (!ast_supports_images(chan)) {
/* Does not support transport */
- pbx_builtin_setvar_helper(chan, "SENDIMAGESTATUS", "NOSUPPORT");
+ pbx_builtin_setvar_helper(chan, "SENDIMAGESTATUS", "UNSUPPORTED");
return 0;
}
- if (!(res = ast_send_image(chan, data)))
- pbx_builtin_setvar_helper(chan, "SENDIMAGESTATUS", "OK");
-
- return res;
+ if (!ast_send_image(chan, data)) {
+ pbx_builtin_setvar_helper(chan, "SENDIMAGESTATUS", "SUCCESS");
+ } else {
+ pbx_builtin_setvar_helper(chan, "SENDIMAGESTATUS", "FAILURE");
+ }
+
+ return 0;
}
static int unload_module(void)