From 35bdae4aa2cf75719dddd68e0d07f5009e8ecb70 Mon Sep 17 00:00:00 2001 From: Mathieu Rene Date: Fri, 5 Jun 2009 01:16:02 +0000 Subject: [PATCH] add hunt_caller_profile git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13626 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_caller.c | 2 ++ src/switch_channel.c | 4 ++-- src/switch_core_session.c | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) 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])));