mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-31 02:37:10 +00:00 
			
		
		
		
	Merged revisions 75978 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r75978 | mmichelson | 2007-07-19 13:59:30 -0500 (Thu, 19 Jul 2007) | 3 lines The diff on this looks pretty big but all I did was remove a pointless if statement (always evaluates true). ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@75979 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		
							
								
								
									
										167
									
								
								apps/app_queue.c
									
									
									
									
									
								
							
							
						
						
									
										167
									
								
								apps/app_queue.c
									
									
									
									
									
								
							| @@ -3528,106 +3528,103 @@ check_turns: | ||||
| 		if (res) | ||||
| 			goto stop; | ||||
|  | ||||
| 		/* always true... */ | ||||
| 		if (!res) { | ||||
| 			int makeannouncement = 0; | ||||
| 		int makeannouncement = 0; | ||||
|  | ||||
| 			for (;;) { | ||||
| 				/* This is the wait loop for the head caller*/ | ||||
| 				/* To exit, they may get their call answered; */ | ||||
| 				/* they may dial a digit from the queue context; */ | ||||
| 				/* or, they may timeout. */ | ||||
| 		for (;;) { | ||||
| 			/* This is the wait loop for the head caller*/ | ||||
| 			/* To exit, they may get their call answered; */ | ||||
| 			/* they may dial a digit from the queue context; */ | ||||
| 			/* or, they may timeout. */ | ||||
|  | ||||
| 				enum queue_member_status stat; | ||||
| 			enum queue_member_status stat; | ||||
|  | ||||
| 				/* Leave if we have exceeded our queuetimeout */ | ||||
| 				if (qe.expire && (time(NULL) > qe.expire)) { | ||||
| 					record_abandoned(&qe); | ||||
| 					reason = QUEUE_TIMEOUT; | ||||
| 					res = 0; | ||||
| 					ast_queue_log(args.queuename, chan->uniqueid,"NONE", "EXITWITHTIMEOUT", "%d|%d|%ld",  | ||||
| 						qe.pos, qe.opos, (long) time(NULL) - qe.start); | ||||
| 					break; | ||||
| 				} | ||||
| 			/* Leave if we have exceeded our queuetimeout */ | ||||
| 			if (qe.expire && (time(NULL) > qe.expire)) { | ||||
| 				record_abandoned(&qe); | ||||
| 				reason = QUEUE_TIMEOUT; | ||||
| 				res = 0; | ||||
| 				ast_queue_log(args.queuename, chan->uniqueid,"NONE", "EXITWITHTIMEOUT", "%d|%d|%ld",  | ||||
| 					qe.pos, qe.opos, (long) time(NULL) - qe.start); | ||||
| 				break; | ||||
| 			} | ||||
|  | ||||
| 				if (makeannouncement) { | ||||
| 					/* Make a position announcement, if enabled */ | ||||
| 			if (makeannouncement) { | ||||
| 				/* Make a position announcement, if enabled */ | ||||
|  | ||||
| 					if (qe.parent->announcefrequency && !ringing) | ||||
| 						if ((res = say_position(&qe))) | ||||
| 							goto stop; | ||||
| 				} | ||||
| 				makeannouncement = 1; | ||||
|  | ||||
| 				/* Make a periodic announcement, if enabled */ | ||||
| 				if (qe.parent->periodicannouncefrequency && !ringing) | ||||
| 					if ((res = say_periodic_announcement(&qe))) | ||||
| 				if (qe.parent->announcefrequency && !ringing) | ||||
| 					if ((res = say_position(&qe))) | ||||
| 						goto stop; | ||||
| 			} | ||||
| 			makeannouncement = 1; | ||||
|  | ||||
| 				/* Try calling all queue members for 'timeout' seconds */ | ||||
| 				res = try_calling(&qe, args.options, args.announceoverride, args.url, &go_on, args.agi, args.macro, args.gosub); | ||||
| 				if (res) | ||||
| 			/* Make a periodic announcement, if enabled */ | ||||
| 			if (qe.parent->periodicannouncefrequency && !ringing) | ||||
| 				if ((res = say_periodic_announcement(&qe))) | ||||
| 					goto stop; | ||||
|  | ||||
| 				stat = get_member_status(qe.parent, qe.max_penalty); | ||||
| 			/* Try calling all queue members for 'timeout' seconds */ | ||||
| 			res = try_calling(&qe, args.options, args.announceoverride, args.url, &go_on, args.agi, args.macro, args.gosub); | ||||
| 			if (res) | ||||
| 				goto stop; | ||||
|  | ||||
| 				/* exit after 'timeout' cycle if 'n' option enabled */ | ||||
| 				if (go_on) { | ||||
| 					if (option_verbose > 2) | ||||
| 						ast_verbose(VERBOSE_PREFIX_3 "Exiting on time-out cycle\n"); | ||||
| 					ast_queue_log(args.queuename, chan->uniqueid, "NONE", "EXITWITHTIMEOUT", "%d", qe.pos); | ||||
| 					record_abandoned(&qe); | ||||
| 					reason = QUEUE_TIMEOUT; | ||||
| 					res = 0; | ||||
| 					break; | ||||
| 				} | ||||
| 			stat = get_member_status(qe.parent, qe.max_penalty); | ||||
|  | ||||
| 				/* leave the queue if no agents, if enabled */ | ||||
| 				if (qe.parent->leavewhenempty && (stat == QUEUE_NO_MEMBERS)) { | ||||
| 					record_abandoned(&qe); | ||||
| 					reason = QUEUE_LEAVEEMPTY; | ||||
| 					ast_queue_log(args.queuename, chan->uniqueid, "NONE", "EXITEMPTY", "%d|%d|%ld", qe.pos, qe.opos, (long)(time(NULL) - qe.start)); | ||||
| 					res = 0; | ||||
| 					break; | ||||
| 				} | ||||
| 			/* exit after 'timeout' cycle if 'n' option enabled */ | ||||
| 			if (go_on) { | ||||
| 				if (option_verbose > 2) | ||||
| 					ast_verbose(VERBOSE_PREFIX_3 "Exiting on time-out cycle\n"); | ||||
| 				ast_queue_log(args.queuename, chan->uniqueid, "NONE", "EXITWITHTIMEOUT", "%d", qe.pos); | ||||
| 				record_abandoned(&qe); | ||||
| 				reason = QUEUE_TIMEOUT; | ||||
| 				res = 0; | ||||
| 				break; | ||||
| 			} | ||||
|  | ||||
| 				/* leave the queue if no reachable agents, if enabled */ | ||||
| 				if ((qe.parent->leavewhenempty == QUEUE_EMPTY_STRICT) && (stat == QUEUE_NO_REACHABLE_MEMBERS || stat == QUEUE_NO_UNPAUSED_REACHABLE_MEMBERS)) { | ||||
| 					record_abandoned(&qe); | ||||
| 					reason = QUEUE_LEAVEUNAVAIL; | ||||
| 					ast_queue_log(args.queuename, chan->uniqueid, "NONE", "EXITEMPTY", "%d|%d|%ld", qe.pos, qe.opos, (long)(time(NULL) - qe.start)); | ||||
| 					res = 0; | ||||
| 					break; | ||||
| 				} | ||||
| 				if ((qe.parent->leavewhenempty == QUEUE_EMPTY_LOOSE) && (stat == QUEUE_NO_REACHABLE_MEMBERS)) { | ||||
| 					record_abandoned(&qe); | ||||
| 					reason = QUEUE_LEAVEUNAVAIL; | ||||
| 					res = 0; | ||||
| 					break; | ||||
| 				} | ||||
| 			/* leave the queue if no agents, if enabled */ | ||||
| 			if (qe.parent->leavewhenempty && (stat == QUEUE_NO_MEMBERS)) { | ||||
| 				record_abandoned(&qe); | ||||
| 				reason = QUEUE_LEAVEEMPTY; | ||||
| 				ast_queue_log(args.queuename, chan->uniqueid, "NONE", "EXITEMPTY", "%d|%d|%ld", qe.pos, qe.opos, (long)(time(NULL) - qe.start)); | ||||
| 				res = 0; | ||||
| 				break; | ||||
| 			} | ||||
|  | ||||
| 				/* Leave if we have exceeded our queuetimeout */ | ||||
| 				if (qe.expire && (time(NULL) > qe.expire)) { | ||||
| 					record_abandoned(&qe); | ||||
| 					reason = QUEUE_TIMEOUT; | ||||
| 					res = 0; | ||||
| 					ast_queue_log(qe.parent->name, qe.chan->uniqueid,"NONE", "EXITWITHTIMEOUT", "%d|%d|%ld", qe.pos, qe.opos, (long) time(NULL) - qe.start); | ||||
| 					break; | ||||
| 				} | ||||
| 			/* leave the queue if no reachable agents, if enabled */ | ||||
| 			if ((qe.parent->leavewhenempty == QUEUE_EMPTY_STRICT) && (stat == QUEUE_NO_REACHABLE_MEMBERS || stat == QUEUE_NO_UNPAUSED_REACHABLE_MEMBERS)) { | ||||
| 				record_abandoned(&qe); | ||||
| 				reason = QUEUE_LEAVEUNAVAIL; | ||||
| 				ast_queue_log(args.queuename, chan->uniqueid, "NONE", "EXITEMPTY", "%d|%d|%ld", qe.pos, qe.opos, (long)(time(NULL) - qe.start)); | ||||
| 				res = 0; | ||||
| 				break; | ||||
| 			} | ||||
| 			if ((qe.parent->leavewhenempty == QUEUE_EMPTY_LOOSE) && (stat == QUEUE_NO_REACHABLE_MEMBERS)) { | ||||
| 				record_abandoned(&qe); | ||||
| 				reason = QUEUE_LEAVEUNAVAIL; | ||||
| 				res = 0; | ||||
| 				break; | ||||
| 			} | ||||
|  | ||||
| 				/* OK, we didn't get anybody; wait for 'retry' seconds; may get a digit to exit with */ | ||||
| 				res = wait_a_bit(&qe); | ||||
| 				if (res) | ||||
| 					goto stop; | ||||
| 			/* Leave if we have exceeded our queuetimeout */ | ||||
| 			if (qe.expire && (time(NULL) > qe.expire)) { | ||||
| 				record_abandoned(&qe); | ||||
| 				reason = QUEUE_TIMEOUT; | ||||
| 				res = 0; | ||||
| 				ast_queue_log(qe.parent->name, qe.chan->uniqueid,"NONE", "EXITWITHTIMEOUT", "%d|%d|%ld", qe.pos, qe.opos, (long) time(NULL) - qe.start); | ||||
| 				break; | ||||
| 			} | ||||
|  | ||||
| 				/* Since this is a priority queue and | ||||
| 				 * it is not sure that we are still at the head | ||||
| 				 * of the queue, go and check for our turn again. | ||||
| 				 */ | ||||
| 				if (!is_our_turn(&qe)) { | ||||
| 					ast_debug(1, "Darn priorities, going back in queue (%s)!\n", qe.chan->name); | ||||
| 					goto check_turns; | ||||
| 				} | ||||
| 			/* OK, we didn't get anybody; wait for 'retry' seconds; may get a digit to exit with */ | ||||
| 			res = wait_a_bit(&qe); | ||||
| 			if (res) | ||||
| 				goto stop; | ||||
|  | ||||
| 			/* Since this is a priority queue and | ||||
| 			 * it is not sure that we are still at the head | ||||
| 			 * of the queue, go and check for our turn again. | ||||
| 			 */ | ||||
| 			if (!is_our_turn(&qe)) { | ||||
| 				ast_debug(1, "Darn priorities, going back in queue (%s)!\n", qe.chan->name); | ||||
| 				goto check_turns; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user