add hunt_caller_profile

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13625 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
Anthony Minessale 2009-06-05 01:05:11 +00:00
parent c464a35d1f
commit ef5b6d76a8
4 changed files with 19 additions and 0 deletions

View File

@ -99,6 +99,7 @@ SWITCH_BEGIN_EXTERN_C
switch_caller_profile_flag_t flags; switch_caller_profile_flag_t flags;
struct switch_caller_profile *originator_caller_profile; struct switch_caller_profile *originator_caller_profile;
struct switch_caller_profile *originatee_caller_profile; struct switch_caller_profile *originatee_caller_profile;
struct switch_caller_profile *hunt_caller_profile;
struct switch_channel_timetable *times; struct switch_channel_timetable *times;
struct switch_caller_extension *caller_extension; struct switch_caller_extension *caller_extension;
switch_memory_pool_t *pool; switch_memory_pool_t *pool;

View File

@ -189,6 +189,8 @@ SWITCH_DECLARE(switch_caller_profile_t *) switch_channel_get_caller_profile(swit
*/ */
SWITCH_DECLARE(void) switch_channel_set_originator_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile); SWITCH_DECLARE(void) switch_channel_set_originator_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile);
SWITCH_DECLARE(void) switch_channel_set_hunt_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile);
/*! /*!
\brief Retrive the given channel's originator caller profile \brief Retrive the given channel's originator caller profile
\param channel channel to retrive the profile from \param channel channel to retrive the profile from

View File

@ -1483,6 +1483,19 @@ SWITCH_DECLARE(void) switch_channel_set_originator_caller_profile(switch_channel
switch_mutex_unlock(channel->profile_mutex); switch_mutex_unlock(channel->profile_mutex);
} }
SWITCH_DECLARE(void) switch_channel_set_hunt_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile)
{
switch_assert(channel != NULL);
switch_assert(channel->caller_profile != NULL);
switch_mutex_lock(channel->profile_mutex);
channel->caller_profile->hunt_caller_profile = NULL;
if (channel->caller_profile && caller_profile) {
channel->caller_profile->hunt_caller_profile = caller_profile;
}
switch_mutex_unlock(channel->profile_mutex);
}
SWITCH_DECLARE(void) switch_channel_set_originatee_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile) SWITCH_DECLARE(void) switch_channel_set_originatee_caller_profile(switch_channel_t *channel, switch_caller_profile_t *caller_profile)
{ {
switch_assert(channel != NULL); switch_assert(channel != NULL);

View File

@ -1526,6 +1526,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_execute_exten(switch_core_se
dpstr = switch_core_session_strdup(session, new_profile->dialplan); 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]))); argc = switch_separate_string(dpstr, ',', dp, (sizeof(dp) / sizeof(dp[0])));
for (x = 0; x < argc; x++) { for (x = 0; x < argc; x++) {
char *dpname = dp[x]; char *dpname = dp[x];
@ -1581,6 +1582,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_execute_exten(switch_core_se
} }
done: done:
switch_channel_set_hunt_caller_profile(channel, NULL);
session->stack_count--; session->stack_count--;
return status; return status;
} }