[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