Author: anthm Date: Fri Jun 22 23:26:12 2007 New Revision: 5446 Modified: freeswitch/trunk/scripts/socket/sock.pl freeswitch/trunk/src/switch_rtp.c Log: avoiding racing cpu (part 2) Modified: freeswitch/trunk/scripts/socket/sock.pl ============================================================================== --- freeswitch/trunk/scripts/socket/sock.pl (original) +++ freeswitch/trunk/scripts/socket/sock.pl Fri Jun 22 23:26:12 2007 @@ -21,12 +21,12 @@ $o = $fs->call_command("answer"); #to turn on events when in async mode -#$o = $fs->raw_command("myevents"); +$o = $fs->raw_command("myevents"); $o = $fs->call_command("playback", "/ram/swimp.raw"); $o = $fs->call_command("hangup"); #comment exit in async mode -exit; +#exit; while(my $r = $fs->readhash(undef)) { if ($r->{socketerror}) { Modified: freeswitch/trunk/src/switch_rtp.c ============================================================================== --- freeswitch/trunk/src/switch_rtp.c (original) +++ freeswitch/trunk/src/switch_rtp.c Fri Jun 22 23:26:12 2007 @@ -964,12 +964,7 @@ if (status == SWITCH_STATUS_BREAK || bytes == 0) { if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_DATAWAIT)) { - if (rtp_session->ms_per_packet) { - switch_yield((rtp_session->ms_per_packet / 1000) * 750); - } else { - switch_yield(1000); - } - continue; + goto do_continue; } return 0; } @@ -1005,12 +1000,7 @@ if (bytes && rtp_session->cng_pt && rtp_session->recv_msg.header.pt == rtp_session->cng_pt) { - if (rtp_session->ms_per_packet) { - switch_yield((rtp_session->ms_per_packet / 1000) * 750); - } else { - switch_yield(1000); - } - continue; + goto do_continue; } @@ -1059,11 +1049,19 @@ } } - continue; + goto do_continue; } break; + + do_continue: + + if (rtp_session->ms_per_packet) { + switch_yield((rtp_session->ms_per_packet / 1000) * 750); + } else { + switch_yield(1000); + } } *payload_type = (switch_payload_t) rtp_session->recv_msg.header.pt;