diff options
-rw-r--r-- | apps/app_queue.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c index 38401607b..6265308b7 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -2687,8 +2687,19 @@ static void update_realtime_members(struct call_queue *q) struct ao2_iterator mem_iter; if (!(member_config = ast_load_realtime_multientry("queue_members", "interface LIKE", "%", "queue_name", q->name , SENTINEL))) { - /*This queue doesn't have realtime members*/ + /* This queue doesn't have realtime members. If the queue still has any realtime + * members in memory, they need to be removed. + */ + ao2_lock(q); + mem_iter = ao2_iterator_init(q->members, 0); + while ((m = ao2_iterator_next(&mem_iter))) { + if (m->realtime) { + ao2_unlink(q->members, m); + } + ao2_ref(m, -1); + } ast_debug(3, "Queue %s has no realtime members defined. No need for update\n", q->name); + ao2_unlock(q); return; } |