Update of /usr/cvsroot/asterisk/apps
In directory mongoose.digium.com:/tmp/cvs-serv20526/apps

Modified Files:
        app_dial.c 
Log Message:
Add 'n' option to dial for "nojump" (bug #4034)


Index: app_dial.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_dial.c,v
retrieving revision 1.147
retrieving revision 1.148
diff -u -d -r1.147 -r1.148
--- app_dial.c  13 Apr 2005 16:43:26 -0000      1.147
+++ app_dial.c  15 Apr 2005 05:30:27 -0000      1.148
@@ -106,7 +106,8 @@
 "             * LIMIT_CONNECT_FILE        File to play when call begins.\n"
 "             * LIMIT_WARNING_FILE        File to play as warning if 'y' is 
defined.\n"
 "                        'timeleft' is a special sound macro to auto-say the 
time \n"
-"                        left and is the default.\n\n"
+"                        left and is the default.\n"
+"       'n' -- Do not jump to n+101 if all of the channels were busy.\n\n"
 "  In addition to transferring the call, a call may be parked and then 
picked\n"
 "up by another user.\n"
 "  The optional URL will be sent to the called party if the channel supports 
it.\n"
@@ -258,7 +259,7 @@
                           dst->uniqueid);
 }
 
-static struct ast_channel *wait_for_answer(struct ast_channel *in, struct 
localuser *outgoing, int *to, struct ast_flags *peerflags, int *sentringing, 
char *status, size_t statussize, int busystart, int nochanstart, int 
congestionstart, int *result)
+static struct ast_channel *wait_for_answer(struct ast_channel *in, struct 
localuser *outgoing, int *to, struct ast_flags *peerflags, int *sentringing, 
char *status, size_t statussize, int busystart, int nochanstart, int 
congestionstart, int nojump, int *result)
 {
        struct localuser *o;
        int found;
@@ -314,7 +315,7 @@
                                else if (numnochan)
                                        strncpy(status, "CHANUNAVAIL", 
statussize - 1);
                                /* See if there is a special busy message */
-                               if (ast_exists_extension(in, in->context, 
in->exten, in->priority + 101, in->cid.cid_num)) 
+                               if (!nojump && ast_exists_extension(in, 
in->context, in->exten, in->priority + 101, in->cid.cid_num)) 
                                        in->priority+=100;
                        } else {
                                if (option_verbose > 2)
@@ -645,6 +646,7 @@
        time_t start_time, answer_time, end_time;
        struct ast_app *app = NULL;
        char *dblgoto = NULL;
+       int nojump = 0;
 
        if (!data) {
                ast_log(LOG_WARNING, "Dial requires an argument 
(technology1/number1&technology2/number2...|optional timeout|options)\n");
@@ -896,7 +898,9 @@
                        privacy = 1;
                } else if (strchr(transfer, 'C')) {
                        resetcdr = 1;
-               }
+               } else if (strchr(transfer, 'n')) {
+                       nojump = 1;
+                }
        }
        if (resetcdr && chan->cdr)
                ast_cdr_reset(chan->cdr, 0);
@@ -1115,7 +1119,7 @@
                strncpy(status, "CHANUNAVAIL", sizeof(status) - 1);
 
        time(&start_time);
-       peer = wait_for_answer(chan, outgoing, &to, peerflags, &sentringing, 
status, sizeof(status), numbusy, numnochan, numcongestion, &result);
+       peer = wait_for_answer(chan, outgoing, &to, peerflags, &sentringing, 
status, sizeof(status), numbusy, numnochan, numcongestion, nojump, &result);
        
        if (!peer) {
                if (result) {

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to