]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_queue: Member stuck as pending after forwarding previous call from queue
authorRobert Mordec <r.mordec@slican.pl>
Tue, 14 Mar 2017 14:27:56 +0000 (15:27 +0100)
committerKevin Harwell <kharwell@digium.com>
Fri, 17 Mar 2017 15:59:13 +0000 (09:59 -0600)
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

apps/app_queue.c

index 6ce9705e58cd6e4e32697df3b3f0e6f123a84284..d465c39c21d6a759c6687dd6f347534d46b9db87 100644 (file)
@@ -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) {