Modern browsers obfuscate local IP addresses with mDNS hostnames
(e.g. abcdef12-3456.local) for privacy. When mDNS resolution is
unavailable on the LAN, WebRTC ICE candidates cannot be resolved
and the peer connection fails.
This fix makes the signaling server extract each client's real IP
from the TCP connection and share it via Welcome/PeerJoined messages.
The client then replaces any .local mDNS addresses in SDP offers,
answers, and trickle ICE candidates with the peer's actual IP address,
enabling direct IP connectivity without relying on mDNS.
https://claude.ai/code/session_01EZrFdyAR35RLwRdHUA9zPJ
This script will migrate all crate-level version dependencies to the
top-level.
It won't work for more esoteric configurations, and print a warning.
Signed-off-by: Marcel Müller <neikos@neikos.email>