ice-lite endpoint → RTPEngine mr13.5.1.3 → plain RTP endpoint
Calls establish successfully (SIP signaling works fine), but there is no audio path in either direction.
- One side is an ICE-lite capable endpoint, the other is a plain RTP endpoint (no ICE support)
It looks like your ICE-lite peer has a broken ICE implementation, or something has incorrectly mangled the SDP, or something else is wrong with that peer.
The received offer SDP shows:
a=candidate:5366908390 1 udp 2130706431 172.16.99.205 16912 typ host generation 0These two candidates are for components 1 and 2, which are RTP and RTCP. They should have different ports: RTCP would run on 16913, not 16912.
a=candidate:5366908390 2 udp 2130706431 172.16.99.205 16912 typ host generation 0
All ICE candidates also must have unique priority numbers, which is mandated by the RFC. These do not.
It's possible to run RTP and RTCP on the same port, but this would need to be advertised explicitly in the SDP (it wasn't), and even if so, then only one candidate should be present.
Rtpengine correctly responds with two distinct candidates for RTP and RTCP:
a=candidate:zL8TuOQMyiInHKIm 1 UDP 2130706431 172.16.99.205 29204 typ host
a=candidate:zL8TuOQMyiInHKIm 2 UDP 2130706430 172.16.99.205 29205 typ host
Ultimately this seems to confuse the peer (if it wasn't already confused) and it ends up delivering RTP to the RTCP port, and so rtpengine forwards this to the remote RTCP port:
port 29205]: [core] Handling packet: remote 172.16.99.205:16912 (expected: 172.16.99.205:16912) -> local 172.16.99.205:29205I'm not sure if this sort of misbehaviour could even be identified and remedied for on the rtpengine side, except maybe detecting the obviously wrong ICE offer and just rejecting it.
port 14095]: [core] Forward to sink endpoint: local 172.16.99.205:14095 -> remote 172.16.99.205:29239
I don't think we currently have an option to explicitly instruct rtpengine "ignore the ICE offer in this SDP."
Cheers