]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Adds a timeout argument to app_originate
authorGregory Nietsky <gregory@distrotech.co.za>
Wed, 21 Sep 2011 10:42:06 +0000 (10:42 +0000)
committerGregory Nietsky <gregory@distrotech.co.za>
Wed, 21 Sep 2011 10:42:06 +0000 (10:42 +0000)
the default is 30s this will be used if the timout supplied is invalid or
no timeout is supplied.

Contributed by: jacco (thank you for the work)

Review: https://reviewboard.asterisk.org/r/1310/

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

CHANGES
apps/app_originate.c

diff --git a/CHANGES b/CHANGES
index 6e623fed0b5ec129a3164cc46f40d54435a54bc2..bc419ee12e1f58c4bf6e1c10f50a27cfc9cb0ee8 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -204,6 +204,7 @@ Applications
    a MeetMe conference
  * Added 'k' option to MeetMe to automatically kill the conference when there's only
    one participant left (much like a normal call bridge)
+ * Added extra argument to Originate to set timeout.
 
 Asterisk Database
 -----------------
index 5cfd41386763dec0ec84c56bec48ebc9855b8539..03bb6c44b8fd036bba07639ef8a4a62ac0f847c2 100644 (file)
@@ -70,6 +70,9 @@ static const char app_originate[] = "Originate";
                        <parameter name="arg3" required="false">
                                <para>If the type is <literal>exten</literal>, then this is the priority that the channel is sent to.  If the type is <literal>app</literal>, then this parameter is ignored.</para>
                        </parameter>
+                       <parameter name="timeout" required="false">
+                               <para>Timeout in seconds. Default is 30 seconds.</para>
+                       </parameter>
                </syntax>
                <description>
                <para>This application originates an outbound call and connects it to a specified extension or application.  This application will block until the outgoing call fails or gets answered.  At that point, this application will exit with the status variable set and dialplan processing will continue.</para>
@@ -101,12 +104,13 @@ static int originate_exec(struct ast_channel *chan, const char *data)
                AST_APP_ARG(arg1);
                AST_APP_ARG(arg2);
                AST_APP_ARG(arg3);
+               AST_APP_ARG(timeout);
        );
        char *parse;
        char *chantech, *chandata;
        int res = -1;
        int outgoing_status = 0;
-       static const unsigned int timeout = 30;
+       unsigned int timeout = 30;
        static const char default_exten[] = "s";
        struct ast_format tmpfmt;
        struct ast_format_cap *cap_slin = ast_format_cap_alloc_nolock();
@@ -131,6 +135,13 @@ static int originate_exec(struct ast_channel *chan, const char *data)
                goto return_cleanup;
        }
 
+       if (!ast_strlen_zero(args.timeout)) {
+               if(sscanf(args.timeout, "%u", &timeout) != 1) {
+                       ast_log(LOG_NOTICE, "Invalid timeout: '%s'. Setting timeout to 30 seconds\n", args.timeout);
+                       timeout = 30;
+               }
+       }
+
        chandata = ast_strdupa(args.tech_data);
        chantech = strsep(&chandata, "/");