summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2005-02-13 16:53:29 +0000
committerMark Spencer <markster@digium.com>2005-02-13 16:53:29 +0000
commitafc33139c429c279acc0a1b1167750b616549122 (patch)
tree736d7f35eb16125bf920787511326188d4f21750 /apps
parent6a181832bbffd77373b055da42ae75b5e43b8ddc (diff)
Properly differentiate between caller and agent hangups (bug #3578)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5018 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps')
-rwxr-xr-xapps/app_queue.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c
index a12cf6899..d75848472 100755
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -1557,7 +1557,7 @@ static int try_calling(struct queue_ent *qe, char *ooptions, char *announceoverr
}
}
res2 |= ast_autoservice_stop(qe->chan);
- if (res2) {
+ if (peer->_softhangup) {
/* Agent must have hung up */
ast_log(LOG_WARNING, "Agent on %s hungup on the customer. They're going to be pissed.\n", peer->name);
ast_queue_log(queuename, qe->chan->uniqueid, peer->name, "AGENTDUMP", "%s", "");
@@ -1570,6 +1570,13 @@ static int try_calling(struct queue_ent *qe, char *ooptions, char *announceoverr
queuename, qe->chan->uniqueid, peer->name, member->interface);
}
ast_hangup(peer);
+ goto out;
+ } else if (res2) {
+ /* Caller must have hung up just before being connected*/
+ ast_log(LOG_NOTICE, "Caller was about to talk to agent on %s but the caller hungup.\n", peer->name);
+ ast_queue_log(queuename, qe->chan->uniqueid, peer->name, "ABANDON", "%d|%d|%ld", qe->pos, qe->opos, (long)time(NULL) - qe->start);
+ record_abandoned(qe);
+ ast_hangup(peer);
return -1;
}
}