diff options
-rw-r--r-- | apps/app_queue.c | 15 | ||||
-rw-r--r-- | main/features.c | 1 |
2 files changed, 11 insertions, 5 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index 8f949635d..39413f9a6 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -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) { - m->status = status; - - /* Whatever the status is clear the member from the pending members pool */ - pending_members_remove(m); + if (m->status != status) { + m->status = status; + + /* 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)); } diff --git a/main/features.c b/main/features.c index b6e9630b5..4062e96ce 100644 --- a/main/features.c +++ b/main/features.c @@ -64,7 +64,6 @@ ASTERISK_REGISTER_FILE() #include "asterisk/cli.h" #include "asterisk/manager.h" #include "asterisk/utils.h" -#include "asterisk/adsi.h" #include "asterisk/devicestate.h" #include "asterisk/audiohook.h" #include "asterisk/global_datastores.h" |