diff --git a/apps/app_queue.c b/apps/app_queue.c index c3b735006a..6ad65a2c40 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -1719,10 +1719,17 @@ struct statechange { */ static int 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); + } if (q->maskmemberstatus) { return 0;