app_queue: Fix members showing as being in call when not.
authorJoshua Colp <jcolp@digium.com>
Mon, 15 May 2017 20:03:36 +0000 (20:03 +0000)
committerJoshua Colp <jcolp@digium.com>
Tue, 23 May 2017 14:24:22 +0000 (09:24 -0500)
commitfaab0580145940f7be8ab72980aa8e69dad376fb
tree5de075baff8260abdf0be44132c7067b8cc81201
parentdece2eb8929c11bad30616d8f3a236ed449c718c
app_queue: Fix members showing as being in call when not.

A change was done which added an 'in_call' flag to queue
members that was set to true while talking to an agent.
Unfortunately in practice this does not accurately reflect
whether they are talking to an agent or not. If a Local
channel is involved and a transfer is performed then the
app_queue application would incorrectly think the agent
was still in a call with the caller. This was done to
fix a race condition between an agent becoming available
by device state and the checking of the last call information
for the wrapup time. There was a small window where the
last call information would be the previous value instead
of the new one.

This change goes about fixing the original issue in a
different way by considering the call completed if device
state is received which would make the agent available
and if they are currently in a call. If this occurs the
last call information is updated before the agent becomes
available ensuring that old information is not present
when checking if the member should be called. This also
improves the transfer situation by actually updating
and enforcing the wrapup time.

ASTERISK-26399
ASTERISK-26400
ASTERISK-26715
ASTERISK-26975

Change-Id: Ife1cb686e3173b3a6d368601adef9aff69d4beea
apps/app_queue.c