]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7467: mod_callcenter - Fixing uuid-standby agents.
authorItalo Rossi <italorossib@gmail.com>
Mon, 22 Jun 2015 20:51:08 +0000 (17:51 -0300)
committerItalo Rossi <italorossib@gmail.com>
Wed, 24 Jun 2015 20:27:45 +0000 (17:27 -0300)
src/mod/applications/mod_callcenter/mod_callcenter.c

index 6db5f8a2cd9608e7ab2cff893f459faf73a838a4..d6841669a8b8220c5da668592f063e52d29b3445 100644 (file)
@@ -1723,15 +1723,19 @@ static void *SWITCH_THREAD_FUNC outbound_agent_thread_run(switch_thread_t *threa
                        playback_array(agent_session, o_announce);
                }
 
-               switch_ivr_uuid_bridge(h->member_session_uuid, switch_core_session_get_uuid(agent_session));
-
-               switch_channel_set_variable(member_channel, "cc_agent_uuid", agent_uuid);
-
                /* This is used for the waiting caller to quit waiting for a agent */
                switch_channel_set_variable(member_channel, "cc_agent_found", "true");
+               switch_channel_set_variable(member_channel, "cc_agent_uuid", agent_uuid);
+               switch_ivr_uuid_bridge(h->member_session_uuid, switch_core_session_get_uuid(agent_session));
+               switch_channel_wait_for_flag(agent_channel, CF_BRIDGED, SWITCH_TRUE, 1000, NULL);
 
                /* Wait until the agent hangup.  This will quit also if the agent transfer the call */
                while(switch_channel_up(agent_channel) && globals.running) {
+                       if (!strcasecmp(h->agent_type, CC_AGENT_TYPE_UUID_STANDBY)) {
+                               if (!switch_channel_test_flag(agent_channel, CF_BRIDGED)) {
+                                       break;
+                               }
+                       }
                        switch_yield(100000);
                }
                tiers_state = CC_TIER_STATE_READY;