aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2008-05-05 21:41:34 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2008-05-05 21:41:34 +0000
commitd821ef5468a18cb7df55e250827331e54247c7db (patch)
treed642cbc10aecbf2c77f2949f18c2193f3183b584
parent82fc4500ed7c73ad0bcfac7aab00ee57e9c0cb25 (diff)
Don't consider a caller "handled" until the caller is bridged with
a queue member. There was too much of an opportunity for the member to hang up (either during a delay, announcement, or overly long agi) between the time that he answered the phone and the time when he actually was bridged with the caller. The consequence of this was that if the member hung up in that interval, then proper abandonment details would not be noted in the queue log if the caller were to hang up at any point after the member hangup. (closes issue #12561) Reported by: ablackthorn git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@115320 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--apps/app_queue.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 313163576..ce74c3f38 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -2791,7 +2791,6 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
/* Ah ha! Someone answered within the desired timeframe. Of course after this
we will always return with -1 so that it is hung up properly after the
conversation. */
- qe->handled++;
if (!strcmp(qe->chan->tech->type, "Zap"))
ast_channel_setoption(qe->chan, AST_OPTION_TONE_VERIFY, &nondataquality, sizeof(nondataquality), 0);
if (!strcmp(peer->tech->type, "Zap"))
@@ -2839,7 +2838,6 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
/* Agent must have hung up */
ast_log(LOG_WARNING, "Agent on %s hungup on the customer.\n", peer->name);
ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "AGENTDUMP", "%s", "");
- record_abandoned(qe);
if (qe->parent->eventwhencalled)
manager_event(EVENT_FLAG_AGENT, "AgentDump",
"Queue: %s\r\n"
@@ -2993,6 +2991,7 @@ static int try_calling(struct queue_ent *qe, const char *options, char *announce
} else
ast_log(LOG_WARNING, "Asked to execute an AGI on this channel, but could not find application (agi)!\n");
}
+ qe->handled++;
ast_queue_log(queuename, qe->chan->uniqueid, member->membername, "CONNECT", "%ld|%s", (long)time(NULL) - qe->start, peer->uniqueid);
if (qe->parent->eventwhencalled)
manager_event(EVENT_FLAG_AGENT, "AgentConnect",