summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorRobert Mordec <r.mordec@slican.pl>2017-03-14 15:27:56 +0100
committerKevin Harwell <kharwell@digium.com>2017-03-17 09:59:13 -0600
commit6ae6e16468d34b02933b7ea98db48cf4b64e3fb0 (patch)
tree13277ea2d93e31b943cccf8d315b478de009a912 /apps
parent67204a0a3d4698b2e24dc0cb8ccb74602f2b1922 (diff)
app_queue: Member stuck as pending after forwarding previous call from queue
Queue member will get stuck in pending_members if queue calls a device that is different from the one observed for state changes. This patch removes members from pending_members as a result of channel stasis events such as blind or attended transfers and hangup. ASTERISK-26862 #close Change-Id: I8bf6df487b9bb35726c08049ff25cdad5e357727
Diffstat (limited to 'apps')
-rw-r--r--apps/app_queue.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 6ce9705e5..d465c39c2 100644
--- a/apps/app_queue.c
+++ b/apps/app_queue.c
@@ -5539,6 +5539,13 @@ static int update_queue(struct call_queue *q, struct member *member, int callcom
member->membername, (long)member->lastcall);
ao2_unlock(q);
}
+ /* Member might never experience any direct status change (local
+ * channel with forwarding in particular). If that's the case,
+ * this is the last chance to remove it from pending or subsequent
+ * calls will not occur.
+ */
+ pending_members_remove(member);
+
ao2_lock(q);
q->callscompleted++;
if (callcompletedinsl) {