mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 10:47:18 +00:00 
			
		
		
		
	This is the fix for bug 8386, wherein the time-limit args to dial didn't work correctly
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@47910 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										19
									
								
								channel.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								channel.c
									
									
									
									
									
								
							| @@ -355,8 +355,11 @@ void ast_channel_unregister(const struct ast_channel_tech *tech) | ||||
| { | ||||
| 	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 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha | ||||
| 		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 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha | ||||
| 				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 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha | ||||
| 				} | ||||
| 				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 @@ enum ast_bridge_result ast_channel_bridge(struct ast_channel *c0, struct ast_cha | ||||
| 			o1nativeformats = c1->nativeformats; | ||||
| 		} | ||||
| 		res = ast_generic_bridge(c0, c1, config, fo, rc, nexteventts); | ||||
| 		if (res != AST_BRIDGE_RETRY) | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| 	c0->_bridge = NULL; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user