From: Artur ZaprzaƂa Date: Wed, 18 Feb 2015 13:26:02 +0000 (+0100) Subject: Fix race condition when callcenter member cancels the call. X-Git-Tag: v1.4.17~1^2~21^2~1^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0df4085c3dbd3a4bfbc602153e86b7b1b7f0f617;p=thirdparty%2Ffreeswitch.git Fix race condition when callcenter member cancels the call. --- diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c index 9f567120b8..6db5f8a2cd 100644 --- a/src/mod/applications/mod_callcenter/mod_callcenter.c +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c @@ -1794,8 +1794,9 @@ static void *SWITCH_THREAD_FUNC outbound_agent_thread_run(switch_thread_t *threa } else { /* Agent didn't answer or originate failed */ int delay_next_agent_call = 0; - sql = switch_mprintf("UPDATE members SET state = '%q', serving_agent = '', serving_system = ''" + sql = switch_mprintf("UPDATE members SET state = case state when '%q' then '%q' else state end, 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_TRYING), /* Only switch to Waiting from Trying (state may be set to Abandoned in callcenter_function()) */ cc_member_state2str(CC_MEMBER_STATE_WAITING), h->agent_name, h->agent_system, h->member_uuid); cc_execute_sql(NULL, sql, NULL);