提交 be741eab authored 作者: Eduardo Marinho's avatar Eduardo Marinho

FS-10304: [mod_callcenter] Prevent infinite logging when a stale queue member in…

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
上级 b12bbbc9
...@@ -2361,7 +2361,10 @@ static int members_callback(void *pArg, int argc, char **argv, char **columnName ...@@ -2361,7 +2361,10 @@ static int members_callback(void *pArg, int argc, char **argv, char **columnName
cbt.member_system = argv[10]; cbt.member_system = argv[10];
if (!cbt.queue_name || !(queue = get_queue(cbt.queue_name))) { 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; goto end;
} else { } else {
queue_name = strdup(queue->name); queue_name = strdup(queue->name);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论