Author: anthm Date: Fri Dec 12 17:34:41 2008 New Revision: 10744 Log: sonus sonus sonus, sonus is a 4 letter word Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c freeswitch/trunk/src/switch_rtp.c 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 Fri Dec 12 17:34:41 2008 @@ -2197,6 +2197,16 @@ switch_set_flag_locked(tech_pvt, TFLAG_BUGGY_2833); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Activate Buggy RFC2833 Mode!\n"); } + + if (strstr(tech_pvt->origin, "Sonus_UAC")) { + switch_set_flag_locked(tech_pvt, TFLAG_BUGGY_2833); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, + "Hello,\nI see you have a Sonus!\n" + "FYI, Sonus cannot follow the RFC on the proper way to send DTMF.\n" + "Sadly, my creator had to spend several hours figuring this out so I thought you'd like to know that!\n" + "Don't worry, DTMF will work but you may want to ask them to fix it......\n" + ); + } } if ((m = sdp->sdp_media) && (m->m_mode == sdp_sendonly || m->m_mode == sdp_inactive)) { Modified: freeswitch/trunk/src/switch_rtp.c ============================================================================== --- freeswitch/trunk/src/switch_rtp.c (original) +++ freeswitch/trunk/src/switch_rtp.c Fri Dec 12 17:34:41 2008 @@ -1204,6 +1204,9 @@ rtp_session->dtmf_data.timestamp_dtmf, rtp_session->dtmf_data.out_digit_sofar, rtp_session->dtmf_data.out_digit_sub_sofar, rtp_session->dtmf_data.out_digit_dur, rtp_session->seq); + if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_BUGGY_2833)) { + rtp_session->dtmf_data.timestamp_dtmf = rtp_session->last_write_ts + samples; + } } if (loops != 1) {