mirror of
https://github.com/signalwire/freeswitch.git
synced 2025-02-10 18:57:45 +00:00
pass pdd data to a leg on oubound calls using bridge
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10115 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
2f9c3e9f1f
commit
2679758551
@ -740,6 +740,9 @@ SWITCH_DECLARE(void) switch_channel_set_flag(switch_channel_t *channel, switch_c
|
|||||||
{
|
{
|
||||||
switch_assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
switch_set_flag_locked(channel, flags);
|
switch_set_flag_locked(channel, flags);
|
||||||
|
if (flags & CF_OUTBOUND) {
|
||||||
|
switch_channel_set_variable(channel, "is_outbound", "true");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_DECLARE(void) switch_channel_set_state_flag(switch_channel_t *channel, switch_channel_flag_t flags)
|
SWITCH_DECLARE(void) switch_channel_set_state_flag(switch_channel_t *channel, switch_channel_flag_t flags)
|
||||||
@ -755,6 +758,9 @@ SWITCH_DECLARE(void) switch_channel_clear_flag(switch_channel_t *channel, switch
|
|||||||
{
|
{
|
||||||
switch_assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
switch_clear_flag_locked(channel, flags);
|
switch_clear_flag_locked(channel, flags);
|
||||||
|
if (flags & CF_OUTBOUND) {
|
||||||
|
switch_channel_set_variable(channel, "is_outbound", NULL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SWITCH_DECLARE(switch_channel_state_t) switch_channel_get_state(switch_channel_t *channel)
|
SWITCH_DECLARE(switch_channel_state_t) switch_channel_get_state(switch_channel_t *channel)
|
||||||
@ -1254,6 +1260,11 @@ SWITCH_DECLARE(void) switch_channel_set_originator_caller_profile(switch_channel
|
|||||||
switch_assert(channel != NULL);
|
switch_assert(channel != NULL);
|
||||||
switch_assert(channel->caller_profile != NULL);
|
switch_assert(channel->caller_profile != NULL);
|
||||||
switch_mutex_lock(channel->profile_mutex);
|
switch_mutex_lock(channel->profile_mutex);
|
||||||
|
|
||||||
|
if (!caller_profile->times) {
|
||||||
|
caller_profile->times = (switch_channel_timetable_t *) switch_core_alloc(caller_profile->pool, sizeof(*caller_profile->times));
|
||||||
|
}
|
||||||
|
|
||||||
if (channel->caller_profile) {
|
if (channel->caller_profile) {
|
||||||
caller_profile->next = channel->caller_profile->originator_caller_profile;
|
caller_profile->next = channel->caller_profile->originator_caller_profile;
|
||||||
channel->caller_profile->originator_caller_profile = caller_profile;
|
channel->caller_profile->originator_caller_profile = caller_profile;
|
||||||
@ -1464,6 +1475,18 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_ring_ready(switch_ch
|
|||||||
if (channel->caller_profile && channel->caller_profile->times) {
|
if (channel->caller_profile && channel->caller_profile->times) {
|
||||||
switch_mutex_lock(channel->profile_mutex);
|
switch_mutex_lock(channel->profile_mutex);
|
||||||
channel->caller_profile->times->progress = switch_timestamp_now();
|
channel->caller_profile->times->progress = switch_timestamp_now();
|
||||||
|
if (channel->caller_profile->originator_caller_profile) {
|
||||||
|
switch_core_session_t *other_session;
|
||||||
|
if ((other_session = switch_core_session_locate(channel->caller_profile->originator_caller_profile->uuid))) {
|
||||||
|
switch_channel_t *other_channel;
|
||||||
|
other_channel = switch_core_session_get_channel(other_session);
|
||||||
|
if (other_channel->caller_profile) {
|
||||||
|
other_channel->caller_profile->times->progress = channel->caller_profile->times->progress;
|
||||||
|
}
|
||||||
|
switch_core_session_rwunlock(other_session);
|
||||||
|
}
|
||||||
|
channel->caller_profile->originator_caller_profile->times->progress = channel->caller_profile->times->progress;
|
||||||
|
}
|
||||||
switch_mutex_unlock(channel->profile_mutex);
|
switch_mutex_unlock(channel->profile_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1510,6 +1533,18 @@ SWITCH_DECLARE(switch_status_t) switch_channel_perform_mark_pre_answered(switch_
|
|||||||
if (channel->caller_profile && channel->caller_profile->times) {
|
if (channel->caller_profile && channel->caller_profile->times) {
|
||||||
switch_mutex_lock(channel->profile_mutex);
|
switch_mutex_lock(channel->profile_mutex);
|
||||||
channel->caller_profile->times->progress_media = switch_timestamp_now();
|
channel->caller_profile->times->progress_media = switch_timestamp_now();
|
||||||
|
if (channel->caller_profile->originator_caller_profile) {
|
||||||
|
switch_core_session_t *other_session;
|
||||||
|
if ((other_session = switch_core_session_locate(channel->caller_profile->originator_caller_profile->uuid))) {
|
||||||
|
switch_channel_t *other_channel;
|
||||||
|
other_channel = switch_core_session_get_channel(other_session);
|
||||||
|
if (other_channel->caller_profile) {
|
||||||
|
other_channel->caller_profile->times->progress_media = channel->caller_profile->times->progress_media;
|
||||||
|
}
|
||||||
|
switch_core_session_rwunlock(other_session);
|
||||||
|
}
|
||||||
|
channel->caller_profile->originator_caller_profile->times->progress_media = channel->caller_profile->times->progress_media;
|
||||||
|
}
|
||||||
switch_mutex_unlock(channel->profile_mutex);
|
switch_mutex_unlock(channel->profile_mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user