From cb62c9cba841126d56b3715b000f6b32f56e55e3 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Mon, 5 May 2008 21:44:04 +0000 Subject: [PATCH] Merged revisions 115321 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ................ r115321 | mmichelson | 2008-05-05 16:43:21 -0500 (Mon, 05 May 2008) | 21 lines Merged revisions 115320 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r115320 | mmichelson | 2008-05-05 16:41:34 -0500 (Mon, 05 May 2008) | 13 lines 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: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@115322 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_queue.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/app_queue.c b/apps/app_queue.c index 906d44712d..a4bab17ff2 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -3284,7 +3284,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")) @@ -3338,7 +3337,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" @@ -3618,6 +3616,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|%ld", (long) time(NULL) - qe->start, peer->uniqueid, (long)(orig - to > 0 ? (orig - to) / 1000 : 0)); if (update_cdr && qe->chan->cdr)