Merge "app_queue: Only remove queue member from pending when state changes."

changes/15/3215/1
zuul 9 years ago committed by Gerrit Code Review
commit 26b4760808

@ -2359,10 +2359,17 @@ static void pending_members_remove(struct member *mem)
*/ */
static void update_status(struct call_queue *q, struct member *m, const int status) static void update_status(struct call_queue *q, struct member *m, const int status)
{ {
m->status = status; if (m->status != status) {
m->status = status;
/* Whatever the status is clear the member from the pending members pool */
pending_members_remove(m); /* Remove the member from the pending members pool only when the status changes.
* This is not done unconditionally because we can occasionally see multiple
* device state notifications of not in use after a previous call has ended,
* including after we have initiated a new call. This is more likely to
* happen when there is latency in the connection to the member.
*/
pending_members_remove(m);
}
queue_publish_member_blob(queue_member_status_type(), queue_member_blob_create(q, m)); queue_publish_member_blob(queue_member_status_type(), queue_member_blob_create(q, m));
} }

Loading…
Cancel
Save