amazon-kinesis-video-streams-webrtc-sdk-c
amazon-kinesis-video-streams-webrtc-sdk-c copied to clipboard
Support Dual-Stack STUN Servers and IPv6 srflx Candidates
Issue #, if available: N/A
What was changed?
- Enabled support for IPv6 srflx candidates.
- Added support for dual-stack STUN servers.
- ICE server structs now maintain two IP addresses per server: IPv4 and IPv6.
- If the STUN server is not dual-stack, then only the IPv4 address will be set.
- If the ICE server is a TURN server, then only the IPv4 address will be set.
- All TURN server functionality remains unchanged, it is only using the IPv4 address of the new
DualKvsIpAddressesstruct. - Dual-stack peers using dual-stack STUN servers gather both IPv4 and IPv6 srflx candidates, allowing for cross-network-type connections between dual-stack and IPv4-only peers.
Why was it changed?
- IPv6 srflx candidates were enabled to prepare for dual-stack STUN service support.
- Dual-stack STUN server support was added to allow for peers on dual-stack networks using dual-stack STUN servers to connect with peers on IPv4-only networks. Previously, only IPv6 srflx candidates would have been gathered when dual-stack peers used dual-stack STUN servers which would not be viable for connection with IPv4-only peers.
How was it changed?
- IPv6 srflx candidates were enabled were enabled by removing the filtering out of local IPv6 STUN candidates from being initialized.
- Dual-stack STUN server support was added by maintaining two IP addresses for dual-stack STUN servers and creating srflx candidates from both, so remote peers can try connections across both IP families.
What testing was done for the changes?
- CI to pass.
- Unit tests with dual-stack server resolution to be added once service support is enabled.
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.