[Asterisk-cvs] asterisk/apps app_disa.c,1.24,1.25

markster at lists.digium.com markster at lists.digium.com
Sat Mar 26 01:14:37 CST 2005


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

Modified Files:
	app_disa.c 
Log Message:
Fix timeouts when no-password used (bug #3859)


Index: app_disa.c
===================================================================
RCS file: /usr/cvsroot/asterisk/apps/app_disa.c,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -d -r1.24 -r1.25
--- app_disa.c	21 Jan 2005 07:06:24 -0000	1.24
+++ app_disa.c	26 Mar 2005 07:08:47 -0000	1.25
@@ -180,7 +180,7 @@
 
 	if (!strcasecmp(tmp, "no-password"))
 	{;
-		k = 1;
+		k |= 1; /* We have the password */
 		ast_log(LOG_DEBUG, "DISA no-password login success\n");
 	}
 	gettimeofday(&lastdigittime,NULL);
@@ -192,10 +192,10 @@
 		gettimeofday(&now,NULL);
 		  /* if outa time, give em reorder */
 		if (ms_diff(&now,&lastdigittime) > 
-		    ((k) ? digittimeout : firstdigittimeout))
+		    ((k&2) ? digittimeout : firstdigittimeout))
 		{
 			ast_log(LOG_DEBUG,"DISA %s entry timeout on chan %s\n",
-				((k) ? "extension" : "password"),chan->name);
+				((k&1) ? "extension" : "password"),chan->name);
 			break;
 		}
 		if ((res = ast_waitfor(chan, -1) < 0)) {
@@ -230,13 +230,15 @@
 		j = f->subclass;  /* save digit */
 		ast_frfree(f);
 		if (i == 0) 
+		{
+			k|=2; /* We have the first digit */ 
 			ast_playtones_stop(chan);
-
+		}
 		gettimeofday(&lastdigittime,NULL);
 		  /* got a DTMF tone */
 		if (i < AST_MAX_EXTENSION) /* if still valid number of digits */
 		{
-			if (!k) /* if in password state */
+			if (!(k&1)) /* if in password state */
 			{
 				if (j == '#') /* end of password */
 				{
@@ -287,7 +289,7 @@
 					ast_log(LOG_DEBUG,"DISA on chan %s password is good\n",chan->name);
 					play_dialtone(chan, mailbox);
 
-					k = 1;
+					k|=1; /* In number mode */
 					i = 0;  /* re-set buffer pointer */
 					exten[sizeof(acctcode)] = 0;
 					strncpy(acctcode,exten, sizeof(acctcode) - 1);
@@ -299,7 +301,7 @@
 
 			exten[i++] = j;  /* save digit */
 			exten[i] = 0;
-			if (!k) continue; /* if getting password, continue doing it */
+			if (!(k&1)) continue; /* if getting password, continue doing it */
 			  /* if this exists */
 
 			if (ast_ignore_pattern(ourcontext, exten)) {
@@ -318,7 +320,7 @@
 		}
 	}
 
-	if (k && ast_exists_extension(chan,ourcontext,exten,1, chan->cid.cid_num))
+	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 */




More information about the svn-commits mailing list