From e6e4c62913966ec0c70775cf8f78433dac1f6f6e Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 6 Sep 2013 04:49:07 +0500 Subject: [PATCH] FS-5757 --- src/mod/endpoints/mod_sofia/sofia.c | 35 ++++++++++++++++++----------- src/switch_ivr_async.c | 3 --- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 1bfd0ee57e..ae3ddb5929 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -8699,24 +8699,33 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool, "%sanswer,intercept:%s", codec_str, bridge_uuid); } else { - const char *name = NULL, *num = NULL; switch_caller_profile_t *bcp = switch_channel_get_caller_profile(b_channel); - - if (switch_channel_test_flag(b_channel, CF_BRIDGE_ORIGINATOR) || !switch_channel_test_flag(b_channel, CF_BRIDGED)) { - name = bcp->callee_id_name; - num = bcp->callee_id_number; - } else { - name = bcp->caller_id_name; - num = bcp->caller_id_number; - } - - tech_pvt->caller_profile->callee_id_name = switch_core_strdup(tech_pvt->caller_profile->pool, name); - tech_pvt->caller_profile->callee_id_number = switch_core_strdup(tech_pvt->caller_profile->pool, num); + + if (switch_channel_test_flag(b_channel, CF_BRIDGE_ORIGINATOR)) { + switch_channel_set_flag(tech_pvt->channel, CF_BRIDGE_ORIGINATOR); + } + + if (!zstr(bcp->callee_id_name)) { + tech_pvt->caller_profile->callee_id_name = switch_core_strdup(tech_pvt->caller_profile->pool, bcp->callee_id_name); + } + + if (!zstr(bcp->callee_id_number)) { + tech_pvt->caller_profile->callee_id_number = switch_core_strdup(tech_pvt->caller_profile->pool, bcp->callee_id_number); + } + + + if (!zstr(bcp->caller_id_name)) { + tech_pvt->caller_profile->caller_id_name = switch_core_strdup(tech_pvt->caller_profile->pool, bcp->caller_id_name); + } + + if (!zstr(bcp->caller_id_number)) { + tech_pvt->caller_profile->caller_id_number = switch_core_strdup(tech_pvt->caller_profile->pool, bcp->caller_id_number); + } if (bcp->originatee_caller_profile) { switch_caller_profile_t *cp; - cp = switch_caller_profile_dup(tech_pvt->caller_profile->pool, + cp = switch_caller_profile_dup(tech_pvt->caller_profile->pool, bcp->originatee_caller_profile); switch_channel_set_originatee_caller_profile(tech_pvt->channel, cp); diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 8446e936d7..36975f6ba8 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -1775,9 +1775,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_eavesdrop_session(switch_core_session name = cp->caller_id_name; num = cp->caller_id_number; } - - my_cp->callee_id_name = switch_core_strdup(my_cp->pool, name); - my_cp->callee_id_number = switch_core_strdup(my_cp->pool, num); } sanity = 300;