diff options
| author | Christophe Besson <cbesson@gmail.com> | 2026-09-04 13:44:00 +0200 |
|---|---|---|
| committer | Christophe Besson <cbesson@gmail.com> | 2026-09-04 13:44:00 +0200 |
| commit | d85dbf5c0be71d870cc9b60510a2d43a9efc9f69 (patch) | |
| tree | cd09e0d8969f321a7ee7e98c3c3918f37752fbc3 /packages/meshbay-node/src/meshbay_node/transport | |
| parent | 3edb0357b7841f1cd9314fd1917bb866a0cba11b (diff) | |
| download | meshbay-d85dbf5c0be71d870cc9b60510a2d43a9efc9f69.tar.gz | |
fix(client): publish the real local IP on every platform, not just win32
Chromium replaces host candidates with random `<uuid>.local` mDNS names.
aioice has no mDNS resolver on any platform: it logs `Remote candidate
"<uuid>.local" could not be resolved` and drops the candidate. Concealment
therefore does not degrade for us, it deletes the only LAN-routable
candidate and leaves reflexive pairs -- which fail whenever both peers are
behind the same NAT, because that pair needs the router to hairpin.
Measured with a Linux client and a node in a libvirt guest: exactly one pair
formed, host -> srflx on a shared public address, five binding requests, zero
responses, FAILED after 63 s. The same log shows a peer on the guest's own
subnet succeeding in 24 ms with a real-IP host candidate.
5022f2b scoped this to win32 from a session where the guest ran the *client*,
so the condition encoded "the machine being debugged" rather than "the peer
is a node". The peer is always a node, on every platform.
The trade is that our private address reaches the hub and the node in the
SDP -- the user's own infrastructure, not an arbitrary page.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DtfG7z6wHWj8RKHCvxQtY1
Diffstat (limited to 'packages/meshbay-node/src/meshbay_node/transport')
0 files changed, 0 insertions, 0 deletions