[commit] r11005 - freeswitch/trunk/src/mod/endpoints/mod_iax
Author: anthm Date: Tue Dec 30 13:23:42 2008 New Revision: 11005 Log: update Modified: freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.c Modified: freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_iax/mod_iax.c Tue Dec 30 13:23:42 2008 @@ -496,6 +496,7 @@ switch_clear_flag_locked(tech_pvt, TFLAG_IO); switch_clear_flag_locked(tech_pvt, TFLAG_VOICE); + switch_clear_flag_locked(tech_pvt, TFLAG_CODEC); if (tech_pvt->read_codec.implementation) { switch_core_codec_destroy(&tech_pvt->read_codec); @@ -1079,17 +1080,16 @@ case IAX_EVENT_VOICE: if (tech_pvt && (tech_pvt->read_frame.datalen = iaxevent->datalen) != 0) { if (channel && switch_channel_get_state(channel) <= CS_HANGUP) { - int bytes, frames; + int bytes = 0, frames = 1; - if (!switch_test_flag(tech_pvt, TFLAG_CODEC)) { + if (!switch_test_flag(tech_pvt, TFLAG_CODEC) || !tech_pvt->read_codec.implementation) { + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); break; } - + if (tech_pvt->read_codec.implementation->encoded_bytes_per_packet) { bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_packet; frames = (int) (tech_pvt->read_frame.datalen / bytes); - } else { - frames = 1; } tech_pvt->read_frame.samples = frames * tech_pvt->read_codec.implementation->samples_per_packet;
participants (1)
-
FreeSWITCH SVN