From af85dcc5c0a0983d5fba122dfbffef343349eb17 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 6 Sep 2013 04:48:56 +0500 Subject: [PATCH] FS-5757 --- src/mod/endpoints/mod_sofia/sofia.c | 27 ++++++++++++++++++--------- src/switch_ivr_async.c | 3 --- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 3bd6531919..f91c81abc5 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -8785,19 +8785,28 @@ 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; + if (switch_channel_test_flag(b_channel, CF_BRIDGE_ORIGINATOR)) { + switch_channel_set_flag(tech_pvt->channel, CF_BRIDGE_ORIGINATOR); } - 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 (!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; diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c index 9f4ea8cf5b..f5d84fbb76 100644 --- a/src/switch_ivr_async.c +++ b/src/switch_ivr_async.c @@ -1711,9 +1711,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;