diff --git a/src/switch_caller.c b/src/switch_caller.c index f5857f6163..4b19170dee 100644 --- a/src/switch_caller.c +++ b/src/switch_caller.c @@ -50,6 +50,8 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_caller_profile_new(switch_memor switch_caller_profile_t *profile = NULL; profile = switch_core_alloc(pool, sizeof(*profile)); + memset(profile, 0, sizeof(*profile)); + switch_assert(profile != NULL); if (!context) { diff --git a/src/switch_channel.c b/src/switch_channel.c index ff706c8511..f6698a84f5 100644 --- a/src/switch_channel.c +++ b/src/switch_channel.c @@ -495,7 +495,7 @@ SWITCH_DECLARE(const char *) switch_channel_get_variable(switch_channel_t *chann switch_mutex_lock(channel->profile_mutex); if (!channel->variables || !(v = switch_event_get_header(channel->variables, varname))) { - switch_caller_profile_t *cp = channel->caller_profile; + switch_caller_profile_t *cp = switch_channel_get_caller_profile(channel); if (cp) { if (!strncmp(varname, "aleg_", 5)) { @@ -1460,7 +1460,7 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_channel_get_caller_profile(swit switch_caller_profile_t *profile; switch_assert(channel != NULL); switch_mutex_lock(channel->profile_mutex); - profile = channel->caller_profile; + profile = channel->hunt_caller_profile ? channel->hunt_caller_profile : channel->caller_profile; switch_mutex_unlock(channel->profile_mutex); return profile; } diff --git a/src/switch_core_session.c b/src/switch_core_session.c index c226164a27..a92e48b147 100644 --- a/src/switch_core_session.c +++ b/src/switch_core_session.c @@ -1525,6 +1525,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_execute_exten(switch_core_se } dpstr = switch_core_session_strdup(session, new_profile->dialplan); + + switch_channel_set_hunt_caller_profile(channel, new_profile); argc = switch_separate_string(dpstr, ',', dp, (sizeof(dp) / sizeof(dp[0])));