WebRTC ICE handling differences between 1.18 and 1.20
I have a bit of a weird issue with my WebRTC setup. I have a server running on GStreamer 1.20, and various clients running on 1.18, 1.20, and browser platforms.
When I run the server and any combination of clients within the local network, everything works smoothly. Same when the both server and client(s) have a public IP.
However, when the clients are behind a NAT and the server is running on a public IP, then I can only make things work with the 1.20 client and/or browsers. The 1.18 client gets stuck when starting the streams (specifically, the first video stream starts, but doesn't play, and the other video stream and the audio stream never start).
This obviously seems like a networking-related issue and I've had a closer look at the client-generated ICE candidates in the NAT scenario, but couldn't spot anything out of the ordinary. I also tried to disable IPv6 and to test with alternative STUN servers, but none of that seems to help.
I'm attaching the ICE candidates generated by the 1.18 and 1.20 clients here, both for the public IP and the local network scenario; the only obvious difference I can spot is that 1.18 generates way more candidates than 1.20.