]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-9734: updated keys to be set in memory on att_xfer execution
authorromana <ts.romana@gmail.com>
Wed, 30 Nov 2016 22:04:44 +0000 (17:04 -0500)
committerromana <ts.romana@gmail.com>
Wed, 30 Nov 2016 22:37:59 +0000 (17:37 -0500)
src/mod/applications/mod_dptools/mod_dptools.c

index 383901a5ef6463fc7b0994aca7e66410ddc3f4d5..b7f461c409129566e82ab00e7f0066007dffa13a 100644 (file)
@@ -2520,20 +2520,39 @@ void *SWITCH_THREAD_FUNC att_thread_run(switch_thread_t *thread, void *obj)
                return NULL;
        }
 
+       bond = switch_channel_get_partner_uuid(channel);
+       switch_channel_set_variable(channel, SWITCH_SOFT_HOLDING_UUID_VARIABLE, bond);
+       switch_core_event_hook_add_state_change(session, tmp_hanguphook);
+
+       if (follow_recording && (b_session = switch_core_session_locate(bond))) {
+               switch_ivr_transfer_recordings(b_session, session);
+               switch_core_session_rwunlock(b_session);
+       }
+
+       if (switch_ivr_originate(session, &peer_session, &cause, data, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL)
+               != SWITCH_STATUS_SUCCESS || !peer_session) {
+               switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, bond);
+               goto end;
+       }
+
+       peer_channel = switch_core_session_get_channel(peer_session);
+       switch_channel_set_flag(peer_channel, CF_INNER_BRIDGE);
+       switch_channel_set_flag(channel, CF_INNER_BRIDGE);
+
        if (!(attxfer_cancel_key = switch_channel_get_variable(channel, "attxfer_cancel_key"))) {
-               if (!(attxfer_cancel_key = switch_channel_get_variable_partner(channel, "attxfer_cancel_key"))) {
+               if (!(attxfer_cancel_key = switch_channel_get_variable(peer_channel, "attxfer_cancel_key"))) {
                        attxfer_cancel_key = "#";
                }
        }
 
        if (!(attxfer_hangup_key = switch_channel_get_variable(channel, "attxfer_hangup_key"))) {
-               if (!(attxfer_hangup_key = switch_channel_get_variable_partner(channel, "attxfer_hangup_key"))) {
+               if (!(attxfer_hangup_key = switch_channel_get_variable(peer_channel, "attxfer_hangup_key"))) {
                        attxfer_hangup_key = "*";
                }
        }
 
        if (!(attxfer_conf_key = switch_channel_get_variable(channel, "attxfer_conf_key"))) {
-               if (!(attxfer_conf_key = switch_channel_get_variable_partner(channel, "attxfer_conf_key"))) {
+               if (!(attxfer_conf_key = switch_channel_get_variable(peer_channel, "attxfer_conf_key"))) {
                        attxfer_conf_key = "0";
                }
        }
@@ -2544,25 +2563,6 @@ void *SWITCH_THREAD_FUNC att_thread_run(switch_thread_t *thread, void *obj)
        keys->attxfer_conf_key = switch_core_session_strdup(session, attxfer_conf_key);
        switch_channel_set_private(channel, "__keys", keys);
 
-       bond = switch_channel_get_partner_uuid(channel);
-       switch_channel_set_variable(channel, SWITCH_SOFT_HOLDING_UUID_VARIABLE, bond);
-       switch_core_event_hook_add_state_change(session, tmp_hanguphook);
-
-       if (follow_recording && (b_session = switch_core_session_locate(bond))) {
-               switch_ivr_transfer_recordings(b_session, session);
-               switch_core_session_rwunlock(b_session);
-       }
-
-       if (switch_ivr_originate(session, &peer_session, &cause, data, 0, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL)
-               != SWITCH_STATUS_SUCCESS || !peer_session) {
-               switch_channel_set_variable(channel, SWITCH_SIGNAL_BOND_VARIABLE, bond);
-               goto end;
-       }
-
-       peer_channel = switch_core_session_get_channel(peer_session);
-       switch_channel_set_flag(peer_channel, CF_INNER_BRIDGE);
-       switch_channel_set_flag(channel, CF_INNER_BRIDGE);
-
        switch_ivr_multi_threaded_bridge(session, peer_session, xfer_on_dtmf, peer_session, NULL);
 
        switch_channel_clear_flag(peer_channel, CF_INNER_BRIDGE);