wgengine/magicsock: don't try to determine endpoints on js/wasm
Avoid netcheck, LocalAddr, etc.
Updates
@@ -1014,6 +1014,9 @@ func (c *Conn) goDerpConnect(node int) {
//
// c.mu must NOT be held.
func (c *Conn) determineEndpoints(ctx context.Context) ([]tailcfg.Endpoint, error) {
+ if runtime.GOOS == "js" {
+ return nil, nil
+ }
portmapExt, havePortmap := c.portMapper.GetCachedMappingOrStartCreatingOne()
nr, err := c.updateNetInfo(ctx)
@@ -1140,6 +1143,9 @@ func endpointSetsEqual(x, y []tailcfg.Endpoint) bool {
// LocalPort returns the current IPv4 listener's port number.
func (c *Conn) LocalPort() uint16 {
+ if runtime.GOOS == "js" {
+ return 12345
+ }
laddr := c.pconn4.LocalAddr()
return uint16(laddr.Port)
}
@@ -2454,16 +2460,12 @@ func (c *connBind) Open(ignoredPort uint16) ([]conn.ReceiveFunc, uint16, error)
}
c.closed = false
fns := []conn.ReceiveFunc{c.receiveIPv4, c.receiveIPv6, c.receiveDERP}
- var port uint16
if runtime.GOOS == "js" {
fns = []conn.ReceiveFunc{c.receiveDERP}
- port = 12345
- } else {
- port = c.LocalPort()
}
// TODO: Combine receiveIPv4 and receiveIPv6 and receiveIP into a single
// closure that closes over a *RebindingUDPConn?
- return fns, port, nil
+ return fns, c.LocalPort(), nil
}
// SetMark is used by wireguard-go to set a mark bit for packets to avoid routing loops.
