[commit] r6101 - freeswitch/trunk/src/mod/endpoints/mod_sofia
Author: anthm Date: Wed Oct 31 13:30:50 2007 New Revision: 6101 Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Log: make rtp timeout 10 times longer than specified value when the call is on hold Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h Wed Oct 31 13:30:50 2007 @@ -342,6 +342,7 @@ sip_contact_t *contact; uint32_t owner_id; uint32_t session_id; + uint32_t max_missed_packets; /** VIDEO **/ switch_frame_t video_read_frame; switch_codec_t video_read_codec; Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Wed Oct 31 13:30:50 2007 @@ -1071,11 +1071,10 @@ } if (rtp_timeout_sec) { - uint32_t packets; - packets = (tech_pvt->read_codec.implementation->samples_per_second * rtp_timeout_sec) / + tech_pvt->max_missed_packets = (tech_pvt->read_codec.implementation->samples_per_second * rtp_timeout_sec) / tech_pvt->read_codec.implementation->samples_per_frame; - switch_rtp_set_max_missed_packets(tech_pvt->rtp_session, packets); + switch_rtp_set_max_missed_packets(tech_pvt->rtp_session, tech_pvt->max_missed_packets); } if (tech_pvt->te) { @@ -1228,6 +1227,9 @@ if (!switch_test_flag(tech_pvt, TFLAG_SIP_HOLD)) { char *stream; switch_set_flag_locked(tech_pvt, TFLAG_SIP_HOLD); + if (tech_pvt->max_missed_packets) { + switch_rtp_set_max_missed_packets(tech_pvt->rtp_session, tech_pvt->max_missed_packets * 10); + } if (!(stream = switch_channel_get_variable(tech_pvt->channel, SWITCH_HOLD_MUSIC_VARIABLE))) { stream = tech_pvt->profile->hold_music; } @@ -1238,6 +1240,9 @@ } else { if (switch_test_flag(tech_pvt, TFLAG_SIP_HOLD)) { switch_channel_clear_flag_partner(tech_pvt->channel, CF_BROADCAST); + if (tech_pvt->max_missed_packets) { + switch_rtp_set_max_missed_packets(tech_pvt->rtp_session, tech_pvt->max_missed_packets); + } switch_channel_set_flag_partner(tech_pvt->channel, CF_BREAK); switch_clear_flag_locked(tech_pvt, TFLAG_SIP_HOLD); }
participants (1)
-
Freeswitch SVN