diff --git a/src/switch_core_session.c b/src/switch_core_session.c index ff95870594..a7d4a9aa19 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -301,6 +301,10 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_ } } + if ((val = switch_channel_get_variable(channel, SWITCH_PROCESS_CDR_VARIABLE))) { + switch_channel_set_variable(peer_channel, SWITCH_PROCESS_CDR_VARIABLE, val); + } + if ((val = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE))) { switch_channel_set_variable(peer_channel, SWITCH_B_SDP_VARIABLE, val); } diff --git a/src/switch_core_state_machine.c b/src/switch_core_state_machine.c index 0d10c3f430..b83ced0d81 100644 --- a/src/switch_core_state_machine.c +++ b/src/switch_core_state_machine.c @@ -423,11 +423,14 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session_t *session) const char *var = switch_channel_get_variable(session->channel, SWITCH_PROCESS_CDR_VARIABLE); if (!switch_strlen_zero(var)) { - - if (!strcasecmp(var, "a_only") && switch_channel_get_originator_caller_profile(session->channel)) { - do_extra_handlers = 0; - } else if (!strcasecmp(var, "b_only") && switch_channel_get_originatee_caller_profile(session->channel)) { - do_extra_handlers = 0; + if (!strcasecmp(var, "a_only")) { + if (switch_channel_get_originator_caller_profile(session->channel)) { + do_extra_handlers = 0; + } + } else if (!strcasecmp(var, "b_only")) { + if (switch_channel_get_originatee_caller_profile(session->channel)) { + do_extra_handlers = 0; + } } else if (!switch_true(var)) { do_extra_handlers = 0; }