From be741eab2ce34122755198c31894941f6e7da7d2 Mon Sep 17 00:00:00 2001 From: Eduardo Marinho Date: Thu, 11 May 2017 09:27:34 -0300 Subject: [PATCH] FS-10304: [mod_callcenter] Prevent infinite logging when a stale queue member in found in the database Having a member from a queue that is no longer found on the current system causes infinite logging about skipping a member. There is already cleanup code for abandoned calls in same function, but it can never be reached for this case, because there is no queue. If the queue is never found again in the system, the logging would continue forever or until the stale record gets removed from the database. FS-10304 #resolve --- src/mod/applications/mod_callcenter/mod_callcenter.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index d3ab7a820f..a55c408c40 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -2361,7 +2361,10 @@ static int members_callback(void *pArg, int argc, char **argv, char **columnName cbt.member_system = argv[10]; if (!cbt.queue_name || !(queue = get_queue(cbt.queue_name))) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Queue %s not found locally, skip this member\n", cbt.queue_name); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Queue %s not found locally, delete this member\n", cbt.queue_name); + sql = switch_mprintf("DELETE FROM members WHERE uuid = '%q' AND system = '%q'", cbt.member_uuid, cbt.member_system); + cc_execute_sql(NULL, sql, NULL); + switch_safe_free(sql); goto end; } else { queue_name = strdup(queue->name);