[asterisk-commits] murf: branch 1.2 r47910 - /branches/1.2/channel.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Tue Nov 21 19:19:09 MST 2006


Author: murf
Date: Tue Nov 21 20:19:09 2006
New Revision: 47910

URL: http://svn.digium.com/view/asterisk?view=rev&rev=47910
Log:
This is the fix for bug 8386, wherein the time-limit args to dial didn't work correctly

Modified:
    branches/1.2/channel.c

Modified: branches/1.2/channel.c
URL: http://svn.digium.com/view/asterisk/branches/1.2/channel.c?view=diff&rev=47910&r1=47909&r2=47910
==============================================================================
--- branches/1.2/channel.c (original)
+++ branches/1.2/channel.c Tue Nov 21 20:19:09 2006
@@ -355,8 +355,11 @@
 {
 	struct chanlist *chan, *last=NULL;
 
-	if (option_debug)
+	if (option_debug && tech && tech->type )
 		ast_log(LOG_DEBUG, "Unregistering channel type '%s'\n", tech->type);
+	else if (option_debug)
+		ast_log(LOG_DEBUG, "Unregistering channel, tech is NULL!!!\n");
+		
 
 	ast_mutex_lock(&chlock);
 
@@ -3502,10 +3505,11 @@
 		if (!ast_tvzero(nexteventts)) {
 			now = ast_tvnow();
 			to = ast_tvdiff_ms(nexteventts, now);
-			if (to <= 0) {
+			if (to <= 0 && !config->timelimit) {	
 				res = AST_BRIDGE_COMPLETE;
 				break;
-			}
+			}	
+				
 		}
 
 		if (config->timelimit) {
@@ -3525,7 +3529,7 @@
 				break;
 			}
 			
-			if (!to) {
+			if (to <= 0) {
 				if (time_left_ms >= 5000) {
 					/* force the time left to round up if appropriate */
 					if (caller_warning && config->warning_sound && config->play_warning)
@@ -3537,8 +3541,11 @@
 				}
 				if (config->warning_freq) {
 					nexteventts = ast_tvadd(nexteventts, ast_samp2tv(config->warning_freq, 1000));
-				} else
+				}
+					
+				if ( (!config->warning_freq) ||  ( config->timelimit - ast_tvdiff_ms(nexteventts, config->start_time) < 0)) {
 					nexteventts = ast_tvadd(config->start_time, ast_samp2tv(config->timelimit, 1000));
+				}
 			}
 		}
 
@@ -3636,8 +3643,6 @@
 			o1nativeformats = c1->nativeformats;
 		}
 		res = ast_generic_bridge(c0, c1, config, fo, rc, nexteventts);
-		if (res != AST_BRIDGE_RETRY)
-			break;
 	}
 
 	c0->_bridge = NULL;



More information about the asterisk-commits mailing list