[Freeswitch-branches] [commit] r11439 - in freeswitch/branches/1.0/src: . mod/endpoints/mod_portaudio

FreeSWITCH SVN mikej at freeswitch.org
Thu Jan 22 15:52:32 PST 2009


Author: mikej
Date: Thu Jan 22 17:52:32 2009
New Revision: 11439

Log:
mod_portaudio: fix stuck channels on outbound calls (r:11160)

Modified:
   freeswitch/branches/1.0/src/mod/endpoints/mod_portaudio/mod_portaudio.c
   freeswitch/branches/1.0/src/switch_rtp.c

Modified: freeswitch/branches/1.0/src/mod/endpoints/mod_portaudio/mod_portaudio.c
==============================================================================
--- freeswitch/branches/1.0/src/mod/endpoints/mod_portaudio/mod_portaudio.c	(original)
+++ freeswitch/branches/1.0/src/mod/endpoints/mod_portaudio/mod_portaudio.c	Thu Jan 22 17:52:32 2009
@@ -801,6 +801,7 @@
 	}
 
 	globals.indev = globals.outdev = globals.ringdev = -1;
+	globals.sample_rate = 8000;
 
 	if ((settings = switch_xml_child(cfg, "settings"))) {
 		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
@@ -821,7 +822,7 @@
 				globals.sample_rate = atoi(val);
 			} else if (!strcmp(var, "codec-ms")) {
 				int tmp = atoi(val);
-				if (SWITCH_ACCEPTABLE_INTERVAL(tmp)) {
+				if (switch_check_interval(globals.sample_rate, tmp)) {
 					globals.codec_ms = tmp;
 				} else {
 					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING,

Modified: freeswitch/branches/1.0/src/switch_rtp.c
==============================================================================
--- freeswitch/branches/1.0/src/switch_rtp.c	(original)
+++ freeswitch/branches/1.0/src/switch_rtp.c	Thu Jan 22 17:52:32 2009
@@ -1007,6 +1007,13 @@
 	return SWITCH_STATUS_SUCCESS;
 }
 
+static void ping_socket(switch_rtp_t *rtp_session)
+{
+	uint32_t o = UINT_MAX;
+	switch_size_t len = sizeof(o);
+	switch_socket_sendto(rtp_session->sock_input, rtp_session->local_addr, 0, (void *) &o, &len);
+}
+
 SWITCH_DECLARE(void) switch_rtp_break(switch_rtp_t *rtp_session)
 {
 	if (!switch_rtp_ready(rtp_session)) {
@@ -1023,9 +1030,7 @@
 	}
 
 	if (rtp_session->sock_input) {
-		uint32_t o = UINT_MAX;
-		switch_size_t len = sizeof(o);
-		switch_socket_sendto(rtp_session->sock_input, rtp_session->local_addr, 0, (void *) &o, &len);
+		ping_socket(rtp_session);
 	}
 	switch_mutex_unlock(rtp_session->flag_mutex);
 }
@@ -1037,6 +1042,7 @@
 	if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO)) {
 		switch_clear_flag(rtp_session, SWITCH_RTP_FLAG_IO);
 		if (rtp_session->sock_input) {
+			ping_socket(rtp_session);
 			switch_socket_shutdown(rtp_session->sock_input, SWITCH_SHUTDOWN_READWRITE);
 		}
 		if (rtp_session->sock_output && rtp_session->sock_output != rtp_session->sock_input) {



More information about the Freeswitch-branches mailing list