diff options
author | Kevin Harwell <kharwell@digium.com> | 2015-09-17 16:47:33 -0500 |
---|---|---|
committer | Kevin Harwell <kharwell@digium.com> | 2015-09-17 16:47:33 -0500 |
commit | 4fb95bbc4e4928dd3403a20d401c285a568f0d09 (patch) | |
tree | ed4cc924d95336519fc373dab092bb94dab67650 /apps | |
parent | a665b3128177fc87036d7eb8b3174ac85e791d22 (diff) |
app_queue: AgentComplete event has wrong reason
When a queued caller transfers an agent to another extension sometimes the
raised AgentComplete event has a reason of "caller" and sometimes "transfer".
Since a transfer has taken place this should always be transfer. This occurs
because sometimes the stasis hangup event arrives before the transfer event
thus writing a different reason out.
With this patch, when a hangup event is received during a transfer it will
check to see if the channel that is hanging up is part of a transfer. If so
it will return and let the subsequently received transfer event handler take
care of the cleanup.
ASTERISK-25399 #close
Change-Id: Ic63c49bd9a5ed463ea7a032fd2ea3d63bc81a50d
Diffstat (limited to 'apps')
-rw-r--r-- | apps/app_queue.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index c0ee9f35f..299527469 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -5998,7 +5998,9 @@ static void handle_hangup(void *userdata, struct stasis_subscription *sub, } chan = ast_channel_get_by_name(channel_blob->snapshot->name); - if (chan && ast_channel_has_role(chan, AST_TRANSFERER_ROLE_NAME)) { + if (chan && (ast_channel_has_role(chan, AST_TRANSFERER_ROLE_NAME) || + !ast_strlen_zero(pbx_builtin_getvar_helper(chan, "ATTENDEDTRANSFER")) || + !ast_strlen_zero(pbx_builtin_getvar_helper(chan, "BLINDTRANSFER")))) { /* Channel that is hanging up is doing it as part of a transfer. * We'll get a transfer event later */ |