Revision
14438
Author
anthm
Date
2009-07-31 14:09:50 -0500 (Fri, 31 Jul 2009)

Log Message

fix att_xfer issue MAILING_LIST-00

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c (14437 => 14438)


--- freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	2009-07-31 07:17:08 UTC (rev 14437)
+++ freeswitch/trunk/src/mod/applications/mod_dptools/mod_dptools.c	2009-07-31 19:09:50 UTC (rev 14438)
@@ -1511,6 +1511,7 @@
 			switch_channel_t *peer_channel = switch_core_session_get_channel(peer_session);
 
 			if (dtmf->digit == '#') {
+				switch_channel_hangup(peer_channel, SWITCH_CAUSE_NORMAL_CLEARING);
 				return SWITCH_STATUS_FALSE;
 			}
 

Modified: freeswitch/trunk/src/switch_ivr_bridge.c (14437 => 14438)


--- freeswitch/trunk/src/switch_ivr_bridge.c	2009-07-31 07:17:08 UTC (rev 14437)
+++ freeswitch/trunk/src/switch_ivr_bridge.c	2009-07-31 19:09:50 UTC (rev 14438)
@@ -450,9 +450,7 @@
 	switch_core_session_reset(session_a, SWITCH_TRUE, SWITCH_TRUE);
 	switch_channel_set_variable(chan_a, SWITCH_BRIDGE_VARIABLE, NULL);
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "BRIDGE THREAD DONE [%s]\n", switch_channel_get_name(chan_a));
-	if (!inner_bridge) {
-		switch_channel_clear_flag(chan_a, CF_BRIDGED);
-	}
+	switch_channel_clear_flag(chan_a, CF_BRIDGED);
 	switch_core_session_kill_channel(session_b, SWITCH_SIG_BREAK);
 	switch_core_session_rwunlock(session_b);
 	return NULL;
@@ -948,6 +946,16 @@
 				switch_cond_next();
 			}
 
+			if (inner_bridge) {
+				if (switch_channel_ready(caller_channel)) {
+					switch_channel_set_flag(caller_channel, CF_BRIDGED);
+				}
+
+				if (switch_channel_ready(peer_channel)) {
+					switch_channel_set_flag(peer_channel, CF_BRIDGED);
+				}
+			}
+			
 			if ((cause = switch_channel_get_cause(caller_channel))) {
 				switch_channel_set_variable(peer_channel, SWITCH_BRIDGE_HANGUP_CAUSE_VARIABLE, switch_channel_cause2str(cause));
 			}