1
0
mirror of https://github.com/signalwire/freeswitch.git synced 2025-04-19 09:47:23 +00:00

add RTP_BUG_ACCEPT_ANY_PACKETS to disable dropping invalid packets for interop with Oracle CCA

This commit is contained in:
Anthony Minessale 2011-09-08 08:57:28 -05:00
parent f2099bf999
commit aea22cd4b7
3 changed files with 19 additions and 1 deletions
src
include
mod/endpoints/mod_sofia
switch_rtp.c

@ -680,6 +680,16 @@ typedef enum {
This flag will treat every dtmf as if it were 50ms and queue it on recipt of the leading packet rather than at the end.
*/
RTP_BUG_ACCEPT_ANY_PACKETS = (1 << 7)
/*
Oracle's Contact Center Anywhere (CCA) likes to use a single RTP socket to send all its outbound audio.
This messes up our ability to auto adjust to NATTED RTP and causes us to ignore its audio packets.
This flag will allow compatibility with this dying product.
*/
} switch_rtp_bug_flag_t;
#ifdef _MSC_VER

@ -6553,6 +6553,14 @@ void sofia_glue_parse_rtp_bugs(switch_rtp_bug_flag_t *flag_pole, const char *str
if (switch_stristr("~IGNORE_DTMF_DURATION", str)) {
*flag_pole &= ~RTP_BUG_IGNORE_DTMF_DURATION;
}
if (switch_stristr("ACCEPT_ANY_PACKETS", str)) {
*flag_pole |= RTP_BUG_ACCEPT_ANY_PACKETS;
}
if (switch_stristr("~ACCEPT_ANY_PACKETS", str)) {
*flag_pole &= ~RTP_BUG_ACCEPT_ANY_PACKETS;
}
}
char *sofia_glue_gen_contact_str(sofia_profile_t *profile, sip_t const *sip, sofia_dispatch_event_t *de, sofia_nat_parse_t *np)

@ -3135,7 +3135,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
goto recvfrom;
}
} else if (!switch_cmp_addr(rtp_session->from_addr, rtp_session->remote_addr)) {
} else if (!(rtp_session->rtp_bugs & RTP_BUG_ACCEPT_ANY_PACKETS) && !switch_cmp_addr(rtp_session->from_addr, rtp_session->remote_addr)) {
goto recvfrom;
}