add RTP_BUG_ACCEPT_ANY_PACKETS to disable dropping invalid packets for interop with Oracle CCA
This commit is contained in:
parent
f2099bf999
commit
aea22cd4b7
|
@ -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.
|
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;
|
} switch_rtp_bug_flag_t;
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
#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)) {
|
if (switch_stristr("~IGNORE_DTMF_DURATION", str)) {
|
||||||
*flag_pole &= ~RTP_BUG_IGNORE_DTMF_DURATION;
|
*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)
|
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;
|
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;
|
goto recvfrom;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue