[Freeswitch-svn] [commit] r2418 - freeswitch/trunk/src
Freeswitch SVN
anthm at freeswitch.org
Mon Aug 28 19:44:39 EDT 2006
Author: anthm
Date: Mon Aug 28 19:44:38 2006
New Revision: 2418
Modified:
freeswitch/trunk/src/switch_ivr.c
Log:
tweaks
Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c (original)
+++ freeswitch/trunk/src/switch_ivr.c Mon Aug 28 19:44:38 2006
@@ -1069,15 +1069,6 @@
data->running = 0;
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "BRIDGE THREAD DONE [%s]\n", switch_channel_get_name(chan_a));
- if (switch_channel_test_flag(chan_a, CF_ORIGINATOR)) {
- if (!switch_channel_test_flag(chan_b, CF_TRANSFER)) {
- switch_core_session_kill_channel(session_b, SWITCH_SIG_KILL);
- switch_channel_hangup(chan_b, SWITCH_CAUSE_NORMAL_CLEARING);
- }
- switch_channel_clear_flag(chan_a, CF_ORIGINATOR);
- his_thread->running = 0;
- }
-
switch_channel_clear_flag(chan_a, CF_BRIDGED);
data->running = 0;
return NULL;
@@ -1645,7 +1636,7 @@
switch_channel_add_state_handler(peer_channel, &audio_bridge_peer_state_handlers);
- if (switch_channel_test_flag(peer_channel, CF_ANSWERED)) {
+ if (switch_channel_test_flag(peer_channel, CF_ANSWERED) && !switch_channel_test_flag(caller_channel, CF_ANSWERED)) {
switch_channel_answer(caller_channel);
}
@@ -1685,7 +1676,18 @@
this_audio_thread->objs[4] = NULL;
this_audio_thread->objs[5] = NULL;
this_audio_thread->running = 2;
+
+
+ if (!switch_channel_test_flag(peer_channel, CF_TRANSFER)) {
+ switch_core_session_kill_channel(peer_session, SWITCH_SIG_KILL);
+ switch_channel_hangup(peer_channel, SWITCH_CAUSE_NORMAL_CLEARING);
+ }
+
+ switch_channel_clear_flag(caller_channel, CF_ORIGINATOR);
+ other_audio_thread->running = 0;
+
switch_core_session_rwunlock(peer_session);
+
} else {
status = SWITCH_STATUS_FALSE;
}
More information about the Freeswitch-svn
mailing list