]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-5757
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 5 Sep 2013 23:48:56 +0000 (04:48 +0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 5 Sep 2013 23:48:56 +0000 (04:48 +0500)
src/mod/endpoints/mod_sofia/sofia.c
src/switch_ivr_async.c

index 3bd6531919d51e3cf13df1139e59702dba2bf86d..f91c81abc5b816fa8ecf2f975e49a977d8c58a81 100644 (file)
@@ -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);
+                                               }
+
+                                               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);
                                                }
 
-                                               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->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;
index 9f4ea8cf5b97bfa2d22658928bca4e1cde4bc0a1..f5d84fbb76162fe3b6905156907819a0b0ed35c1 100644 (file)
@@ -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;