Server-generated ICE candidates


What is the recommended way to control what kind of ICE candidates are generated by the licode server?

I’m seeing failures when clients use firewalls that block UDP traffic. I’ve tried using stun and turn servers with transport=tcp and have tried running the licode service with no turn server specified. I’m running licode on a public IP address (no firewall) and would like to provide TCP candidates directly without a separate stun or turn server.

I don’t know how to determine if candidates returned in any of these scenarios are TCP. In chrome://web-internals, the googTransportType appears as UDP, but postings suggest that the transport type not a good indicator, and my experiments confirm this. As per wireshark, other services that work behind the firewall use TCP (QUIC, actually). Wireshark confirms that the licode connection is always UDP and doesn’t work behind a UDP-blocking firewall. In both cases, the googTransportType in chrome://web-internals is listed as UDP.