Copyright clarification; also, have variable set to "t" or "i" on timeout or
authorTilghman Lesher <tilghman@meg.abyt.es>
Tue, 25 Nov 2008 05:19:53 +0000 (05:19 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Tue, 25 Nov 2008 05:19:53 +0000 (05:19 +0000)
invalid extension, respectively.
(closes issue #13944)
 Reported by: chappell

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@159054 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_readexten.c

index e54741f..9a54094 100644 (file)
@@ -1,9 +1,8 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 2007 Dave Chappell
- *
- * David Chappell <David.Chappell@trincoll.edu>
+ * Copyright (C) 2007-2008, Trinity College Computing Center
+ * Written by David Chappell <David.Chappell@trincoll.edu>
  *
  * See http://www.asterisk.org for more information about
  * the Asterisk project. Please do not directly contact
@@ -77,10 +76,10 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
                                                A valid extension exists in ${variable}.
                                        </value>
                                        <value name="TIMEOUT">
-                                               No extension was entered in the specified time.
+                                               No extension was entered in the specified time.  Also sets ${variable} to "t".
                                        </value>
                                        <value name="INVALID">
-                                               An invalid extension, ${INVALID_EXTEN}, was entered.
+                                               An invalid extension, ${INVALID_EXTEN}, was entered.  Also sets ${variable} to "i".
                                        </value>
                                        <value name="SKIP">
                                                Line was not up and the option 's' was specified.
@@ -154,7 +153,7 @@ static int readexten_exec(struct ast_channel *chan, void *data)
        AST_STANDARD_APP_ARGS(arglist, argcopy);
 
        if (ast_strlen_zero(arglist.variable)) {
-               ast_log(LOG_WARNING, "Invalid! Usage: ReadExten(variable[|filename][|context][|options][|timeout])\n\n");
+               ast_log(LOG_WARNING, "Usage: ReadExten(variable[,filename[,context[,options[,timeout]]]])\n");
                pbx_builtin_setvar_helper(chan, "READEXTENSTATUS", "ERROR");
                return 0;
        }
@@ -218,10 +217,12 @@ static int readexten_exec(struct ast_channel *chan, void *data)
                        timeout = digit_timeout;
 
                        if (res < 1) {          /* timeout expired or hangup */
-                               if (ast_check_hangup(chan))
+                               if (ast_check_hangup(chan)) {
                                        status = "HANGUP";
-                               else
+                               } else {
+                                       pbx_builtin_setvar_helper(chan, arglist.variable, "t");
                                        status = "TIMEOUT";
+                               }
                                break;
                        } else if (res == '#') {
                                break;
@@ -242,6 +243,7 @@ static int readexten_exec(struct ast_channel *chan, void *data)
                        status = "OK";
                } else {
                        ast_debug(3, "User dialed invalid extension '%s' in context '%s' on %s\n", exten, arglist.context, chan->name);
+                       pbx_builtin_setvar_helper(chan, arglist.variable, "i");
                        pbx_builtin_setvar_helper(chan, "INVALID_EXTEN", exten);
                        status = "INVALID";
                }