From c613c654462a6bcf403370d74a5b6163d3c701a9 Mon Sep 17 00:00:00 2001 From: Marc Olivier Chouinard Date: Mon, 8 Jul 2013 00:55:48 -0400 Subject: [PATCH] --resolve FS-5478 --- src/mod/applications/mod_callcenter/mod_callcenter.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 9f74d2f9cc..4e9e852aa9 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -1525,7 +1525,15 @@ static void *SWITCH_THREAD_FUNC outbound_agent_thread_run(switch_thread_t *threa /* Switch the agent session */ if (real_uuid) { switch_core_session_rwunlock(agent_session); - agent_session = switch_core_session_locate(real_uuid); + if (!(agent_session = switch_core_session_locate(real_uuid))) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(member_session), SWITCH_LOG_DEBUG, "Real session is already gone (agent '%s')\n", h->agent_name); + sql = switch_mprintf("UPDATE members SET state = '%q', serving_agent = '', serving_system = ''" + " WHERE serving_agent = '%q' AND serving_system = '%q' AND uuid = '%q' AND system = 'single_box'", + cc_member_state2str(CC_MEMBER_STATE_WAITING), h->agent_name, h->agent_system, h->member_uuid); + cc_execute_sql(NULL, sql, NULL); + switch_safe_free(sql); + goto done; + } agent_uuid = switch_core_session_get_uuid(agent_session); agent_channel = switch_core_session_get_channel(agent_session);