mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	If an agent still has "wrapuptime" left after he finishes a call and the
wrapuptime is changed on a reload, he still waits his former wrapuptime (instead of the new wrapuptime). This reduces his "de facto" wrapuptime immediately to the new value even if he has wrapuptime remaining from a previous call. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5423 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		@@ -294,7 +294,21 @@ static struct agent_pvt *add_agent(char *agent, int pending)
 | 
			
		||||
	strncpy(p->moh, moh, sizeof(p->moh) - 1);
 | 
			
		||||
	p->ackcall = ackcall;
 | 
			
		||||
	p->autologoff = autologoff;
 | 
			
		||||
 | 
			
		||||
	/* If someone reduces the wrapuptime and reloads, we want it
 | 
			
		||||
	 * to change the wrapuptime immediately on all calls */
 | 
			
		||||
	if (p->wrapuptime > wrapuptime) {
 | 
			
		||||
		struct timeval now;
 | 
			
		||||
		gettimeofday(&now, NULL);
 | 
			
		||||
 | 
			
		||||
		/* We won't be pedantic and check the tv_usec val */
 | 
			
		||||
		if (p->lastdisc.tv_sec > (now.tv_sec + wrapuptime/1000)) {
 | 
			
		||||
			p->lastdisc.tv_sec = now.tv_sec + wrapuptime/1000;
 | 
			
		||||
			p->lastdisc.tv_usec = now.tv_usec;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	p->wrapuptime = wrapuptime;
 | 
			
		||||
 | 
			
		||||
	if (pending)
 | 
			
		||||
		p->dead = 1;
 | 
			
		||||
	else
 | 
			
		||||
@@ -1724,7 +1738,7 @@ static int __login_exec(struct ast_channel *chan, void *data, int callbackmode)
 | 
			
		||||
								ast_log(LOG_WARNING, "Unable to set read format to %d\n", ast_best_codec(chan->nativeformats));
 | 
			
		||||
						}
 | 
			
		||||
						if (!res) {
 | 
			
		||||
							ast_set_write_format(chan, ast_best_codec(chan->nativeformats));
 | 
			
		||||
							res = ast_set_write_format(chan, ast_best_codec(chan->nativeformats));
 | 
			
		||||
							if (res)
 | 
			
		||||
								ast_log(LOG_WARNING, "Unable to set write format to %d\n", ast_best_codec(chan->nativeformats));
 | 
			
		||||
						}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user