]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-5757 take 200
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 5 Sep 2013 20:52:11 +0000 (01:52 +0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 5 Sep 2013 20:52:11 +0000 (01:52 +0500)
src/mod/endpoints/mod_sofia/sofia.c
src/switch_caller.c

index 646f6610a31d1852c73cd9e6e7afe6f4cca6a4b1..3bd6531919d51e3cf13df1139e59702dba2bf86d 100644 (file)
@@ -8719,7 +8719,7 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
                        if ((b_session = switch_core_session_locate(b_private->uuid))) {
                                switch_channel_t *b_channel = switch_core_session_get_channel(b_session);
                                const char *bridge_uuid;
-                               switch_caller_profile_t *orig_cp;
+                               switch_caller_profile_t *orig_cp, *cp;
                                //const char *sent_name, *sent_number;
                                orig_cp = switch_channel_get_caller_profile(b_channel);
                                tech_pvt->caller_profile->callee_id_name = switch_core_strdup(tech_pvt->caller_profile->pool, orig_cp->callee_id_name);
@@ -8730,7 +8730,10 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
                                        tech_pvt->caller_profile->caller_id_number = switch_core_strdup(tech_pvt->caller_profile->pool, orig_cp->caller_id_number);
                                }
 
-                               tech_pvt->caller_profile->originator_caller_profile = switch_caller_profile_dup(tech_pvt->caller_profile->pool, orig_cp);
+                               if (orig_cp) {
+                                       cp = switch_caller_profile_dup(tech_pvt->caller_profile->pool, orig_cp);
+                                       switch_channel_set_originator_caller_profile(channel, cp);
+                               }
 
 #if 0
                                sent_name = switch_channel_get_variable(b_channel, "last_sent_callee_id_name");
@@ -8796,7 +8799,14 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
                                                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);
 
-                                               tech_pvt->caller_profile->originatee_caller_profile = switch_caller_profile_dup(tech_pvt->caller_profile->pool, bcp->originatee_caller_profile);
+                                               if (bcp->originatee_caller_profile) {
+                                                       switch_caller_profile_t *cp;
+
+                                                       cp = switch_caller_profile_dup(tech_pvt->caller_profile->pool, 
+                                                                                                                  bcp->originatee_caller_profile);
+
+                                                       switch_channel_set_originatee_caller_profile(tech_pvt->channel, cp);
+                                               }
 
                                                tech_pvt->caller_profile->destination_number = switch_core_sprintf(tech_pvt->caller_profile->pool,
                                                                                                                                                                                   "%sanswer,sofia_sla:%s", codec_str, b_private->uuid);
index d0c4ec87d32abb01171e243c198c2a7b31c50bb7..02de5575aadd5e6b87b8989112859bc7db40c234 100644 (file)
@@ -141,6 +141,8 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_caller_profile_dup(switch_memor
        if (tocopy->times) {
                profile->old_times = (switch_channel_timetable_t *) switch_core_alloc(profile->pool, sizeof(switch_channel_timetable_t));
                *profile->old_times = *tocopy->times;
+       } else {
+               tocopy->times = (switch_channel_timetable_t *) switch_core_alloc(tocopy->pool, sizeof(*tocopy->times));
        }
 
        if (tocopy->soft) {