[Freeswitch-svn] [commit] r3879 - freeswitch/trunk/src

Freeswitch SVN anthm at freeswitch.org
Sun Dec 31 16:06:03 EST 2006


Author: anthm
Date: Sun Dec 31 16:06:03 2006
New Revision: 3879

Modified:
   freeswitch/trunk/src/switch_ivr.c

Log:
fix hold issue reported by irate anonymous guy on irc

Modified: freeswitch/trunk/src/switch_ivr.c
==============================================================================
--- freeswitch/trunk/src/switch_ivr.c	(original)
+++ freeswitch/trunk/src/switch_ivr.c	Sun Dec 31 16:06:03 2006
@@ -1301,7 +1301,7 @@
 		} else { /* time off the channel (if you must) */
 			switch_frame_t *read_frame;
 			switch_status_t status; 
-			while (switch_channel_test_flag(channel, CF_HOLD)) {
+			while (switch_channel_ready(channel) && switch_channel_test_flag(channel, CF_HOLD)) {
 				switch_yield(10000);
 			}
 			status = switch_core_session_read_frame(session, &read_frame, -1, 0);
@@ -1604,7 +1604,7 @@
 				switch_frame_t *read_frame;
 				switch_status_t status = switch_core_session_read_frame(session, &read_frame, -1, 0);
 
-				while (switch_channel_test_flag(channel, CF_HOLD)) {
+				while (switch_channel_ready(channel) && switch_channel_test_flag(channel, CF_HOLD)) {
 					switch_yield(10000);
 				}
 
@@ -1661,7 +1661,7 @@
 			switch_frame_t *read_frame;
 			switch_status_t status = switch_core_session_read_frame(session, &read_frame, -1, 0);
 
-			while (switch_channel_test_flag(channel, CF_HOLD)) {
+			while (switch_channel_ready(channel) && switch_channel_test_flag(channel, CF_HOLD)) {
 				switch_yield(10000);
 			}
 



More information about the Freeswitch-svn mailing list