ipn/ipnlocal: use the fake peerapi listener as fallback if netstack available
The previous commit (1b89662eff
) this for Android, but we can also use
this on any platform if we we would otherwise fail.
Change-Id: I4cd78b40e9e77fca5cc8e717dd48ac173101bed4
Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
pull/4469/head
parent
136f30fc92
commit
a2c330c496
|
@ -436,8 +436,15 @@ func (s *peerAPIServer) listen(ip netaddr.IP, ifState *interfaces.State) (ln net
|
||||||
return ln, nil
|
return ln, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Fall back to random ephemeral port.
|
// Fall back to some random ephemeral port.
|
||||||
return lc.Listen(context.Background(), tcp4or6, net.JoinHostPort(ipStr, "0"))
|
ln, err = lc.Listen(context.Background(), tcp4or6, net.JoinHostPort(ipStr, "0"))
|
||||||
|
|
||||||
|
// And if we're on a platform with netstack (anything but iOS), then just fallback to netstack.
|
||||||
|
if err != nil && runtime.GOOS != "ios" {
|
||||||
|
s.b.logf("peerapi: failed to do peerAPI listen, harmless (netstack available) but error was: %v", err)
|
||||||
|
return newFakePeerAPIListener(ip), nil
|
||||||
|
}
|
||||||
|
return ln, err
|
||||||
}
|
}
|
||||||
|
|
||||||
type peerAPIListener struct {
|
type peerAPIListener struct {
|
||||||
|
|
Loading…
Reference in New Issue