[svn-commits] mmichelson: branch 1.6.0 r121231 - in /branches/1.6.0: ./ channels/chan_agent.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Mon Jun 9 10:10:08 CDT 2008


Author: mmichelson
Date: Mon Jun  9 10:10:08 2008
New Revision: 121231

URL: http://svn.digium.com/view/asterisk?view=rev&rev=121231
Log:
Merged revisions 121230 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk

................
r121230 | mmichelson | 2008-06-09 10:08:58 -0500 (Mon, 09 Jun 2008) | 27 lines

Merged revisions 121229 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

(Note that this is being merged to trunk/1.6.0 because
it may affect non-callback agents with ackcall set)

........
r121229 | mmichelson | 2008-06-09 10:02:37 -0500 (Mon, 09 Jun 2008) | 16 lines

A unique situation of timeouts brought forth a failure situation for
autologoff in chan_agent. If using AgentCallbackLogin-style agents, 
then if the timeout specified by the Dial() to reach the agent's phone
was shorter than the timeout specified in queues.conf, then autologoff
would only work if the caller hung up while the agent's phone was ringing.
This patch allows autologoff to work in this situation when the call in
queue transfers to the next available agent (as it would have if the timeout
in queues.conf were less than the timeout in the Dial()).

(closes issue #12754)
Reported by: Rodrigo
Patches:
      12754.patch uploaded by putnopvut (license 60)
Tested by: Rodrigo


........

................

Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/channels/chan_agent.c

Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.

Modified: branches/1.6.0/channels/chan_agent.c
URL: http://svn.digium.com/view/asterisk/branches/1.6.0/channels/chan_agent.c?view=diff&rev=121231&r1=121230&r2=121231
==============================================================================
--- branches/1.6.0/channels/chan_agent.c (original)
+++ branches/1.6.0/channels/chan_agent.c Mon Jun  9 10:10:08 2008
@@ -434,7 +434,17 @@
 			if (!ast_strlen_zero(p->loginchan)) {
 				if (p->chan)
 					ast_debug(1, "Bridge on '%s' being cleared (2)\n", p->chan->name);
-
+				if (p->owner->_state != AST_STATE_UP) {
+					int howlong = time(NULL) - p->start;
+					if (p->autologoff && howlong > p->autologoff) {
+						long logintime = time(NULL) - p->loginstart;
+						p->loginstart = 0;
+							ast_log(LOG_NOTICE, "Agent '%s' didn't answer/confirm within %d seconds (waited %d)\n", p->name, p->autologoff, howlong);
+						agent_logoff_maintenance(p, p->loginchan, logintime, ast->uniqueid, "Autologoff");
+						if (persistent_agents)
+							dump_agents();
+					}
+				}
 				status = pbx_builtin_getvar_helper(p->chan, "CHANLOCALSTATUS");
 				if (autologoffunavail && status && !strcasecmp(status, "CHANUNAVAIL")) {
 					long logintime = time(NULL) - p->loginstart;




More information about the svn-commits mailing list