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

Modified Files:
        app_disa.c 
Log Message:
make DISA() use 'i' extension if it exists (issue #5439 with mods)


Index: app_disa.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_disa.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- app_disa.c  14 Sep 2005 20:46:49 -0000      1.33
+++ app_disa.c  13 Oct 2005 23:52:42 -0000      1.34
@@ -329,25 +329,35 @@
                }
        }
 
-       if (k==3 && ast_exists_extension(chan, ourcontext, exten, 1, 
chan->cid.cid_num))
-       {
-               ast_playtones_stop(chan);
-               /* We're authenticated and have a valid extension */
-               if (ourcallerid && *ourcallerid)
-               {
-                       ast_callerid_split(ourcallerid, ourcidname, 
sizeof(ourcidname), ourcidnum, sizeof(ourcidnum));
-                       ast_set_callerid(chan, ourcidnum, ourcidname, 
ourcidnum);
+       if (k == 3) {
+               int recheck = 0;
+
+               if (!ast_exists_extension(chan, ourcontext, exten, 1, 
chan->cid.cid_num)) {
+                       exten[0] = 'i';
+                       exten[1] = '\0';
+                       recheck = 1;
                }
+               if (!recheck || ast_exists_extension(chan, ourcontext, exten, 
1, chan->cid.cid_num)) {
+                       ast_playtones_stop(chan);
+                       /* We're authenticated and have a target extension */
+                       if (ourcallerid && *ourcallerid)
+                       {
+                               ast_callerid_split(ourcallerid, ourcidname, 
sizeof(ourcidname), ourcidnum, sizeof(ourcidnum));
+                               ast_set_callerid(chan, ourcidnum, ourcidname, 
ourcidnum);
+                       }
 
-               if (!ast_strlen_zero(acctcode)) {
-                       strncpy(chan->accountcode, acctcode, 
sizeof(chan->accountcode) - 1);
+                       if (!ast_strlen_zero(acctcode))
+                               strncpy(chan->accountcode, acctcode, 
sizeof(chan->accountcode) - 1);
+
+                       ast_cdr_reset(chan->cdr, AST_CDR_FLAG_POSTED);
+                       ast_explicit_goto(chan, ourcontext, exten, 1);
+                       LOCAL_USER_REMOVE(u);
+                       return 0;
                }
-               ast_cdr_reset(chan->cdr, AST_CDR_FLAG_POSTED);
-               ast_goto_if_exists(chan, ourcontext, exten, 1);
-               LOCAL_USER_REMOVE(u);
-               return 0;
        }
 
+       /* Received invalid, but no "i" extension exists in the given context */
+
 reorder:
 
        ast_indicate(chan,AST_CONTROL_CONGESTION);

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

Reply via email to