I'm trying to have WebRTC media over TCP with a gateway in between but I'm having some interesting issues on the ICE connection phase. Before further advances, it's important to know that I have the same setup for UDP and everything works correctly.
In the gateway we modify the remote answer SDP to include a single TCP candidate (the media port is also modified to include the same port):
a=candidate:1 1 tcp 1 <gw_ip> <gw_port> typ host tcptype passive generation 0
Also I'm sending the attribute setup as passive:
a=setup:passive
Seconds after applying the remote description on Chrome, I'm receiving a STUN BIND request on the gateway which I'm answering with a Bind Success response (I've checked both Transaction ID and Message Integrity and they seem fine).
After this chrome simple doesn't continue the ICE checking (neither DTLS messages). I've enabled chrome logs to see if some error was happening and I've found an interesting output:
"Ignoring STUN binding response message on shared socket"
I've taken a look at chromium source code and it seems this is being shown because chrome is using a shared socket but I cannot understand it's reason.
Any ideas? Thanks!