safesocket: remove the now unused WindowsLocalPort

Also drop the port param from safesocket.Listen. #cleanup

Signed-off-by: Maisem Ali <maisem@tailscale.com>
This commit is contained in:
Maisem Ali 2023-01-30 09:34:51 -08:00 committed by Maisem Ali
parent fede3cd704
commit 4441609d8f
8 changed files with 18 additions and 33 deletions

View File

@ -382,7 +382,7 @@ func run() error {
} }
func startIPNServer(ctx context.Context, logf logger.Logf, logid string) error { func startIPNServer(ctx context.Context, logf logger.Logf, logid string) error {
ln, _, err := safesocket.Listen(args.socketpath, safesocket.WindowsLocalPort) ln, err := safesocket.Listen(args.socketpath)
if err != nil { if err != nil {
return fmt.Errorf("safesocket.Listen: %v", err) return fmt.Errorf("safesocket.Listen: %v", err)
} }

View File

@ -301,7 +301,7 @@ func (i *jsIPN) run(jsCallbacks js.Value) {
}() }()
go func() { go func() {
ln, _, err := safesocket.Listen("", 0) ln, err := safesocket.Listen("")
if err != nil { if err != nil {
log.Fatalf("safesocket.Listen: %v", err) log.Fatalf("safesocket.Listen: %v", err)
} }

View File

@ -35,7 +35,6 @@
"tailscale.com/ipn/ipnstate" "tailscale.com/ipn/ipnstate"
"tailscale.com/logtail" "tailscale.com/logtail"
"tailscale.com/net/netutil" "tailscale.com/net/netutil"
"tailscale.com/safesocket"
"tailscale.com/tailcfg" "tailscale.com/tailcfg"
"tailscale.com/tka" "tailscale.com/tka"
"tailscale.com/types/key" "tailscale.com/types/key"
@ -188,17 +187,10 @@ func validHost(h string) bool {
return true return true
} }
// Allow either localhost or loopback IP hosts. // Allow either localhost or loopback IP hosts.
host, portStr, err := net.SplitHostPort(h) host, _, err := net.SplitHostPort(h)
if err != nil { if err != nil {
return false return false
} }
port, err := strconv.ParseUint(portStr, 10, 16)
if err != nil {
return false
}
if runtime.GOOS == "windows" && port != safesocket.WindowsLocalPort {
return false
}
if host == "localhost" { if host == "localhost" {
return true return true
} }

View File

@ -21,7 +21,7 @@ func TestBasics(t *testing.T) {
sock = fmt.Sprintf(`\\.\pipe\tailscale-test`) sock = fmt.Sprintf(`\\.\pipe\tailscale-test`)
} }
l, port, err := Listen(sock, 0) l, err := Listen(sock)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -54,7 +54,6 @@ func TestBasics(t *testing.T) {
go func() { go func() {
s := DefaultConnectionStrategy(sock) s := DefaultConnectionStrategy(sock)
s.port = port
c, err := Connect(s) c, err := Connect(s)
if err != nil { if err != nil {
errs <- err errs <- err

View File

@ -26,7 +26,7 @@ func setFlags(network, address string, c syscall.RawConn) error {
// It provides read/write access to all users and the local system. // It provides read/write access to all users and the local system.
const windowsSDDL = "O:BAG:BAD:PAI(A;OICI;GWGR;;;BU)(A;OICI;GWGR;;;SY)" const windowsSDDL = "O:BAG:BAD:PAI(A;OICI;GWGR;;;BU)(A;OICI;GWGR;;;SY)"
func listen(path string, port uint16) (_ net.Listener, gotPort uint16, _ error) { func listen(path string) (net.Listener, error) {
lc, err := winio.ListenPipe( lc, err := winio.ListenPipe(
path, path,
&winio.PipeConfig{ &winio.PipeConfig{
@ -36,7 +36,7 @@ func listen(path string, port uint16) (_ net.Listener, gotPort uint16, _ error)
}, },
) )
if err != nil { if err != nil {
return nil, 0, fmt.Errorf("namedpipe.Listen: %w", err) return nil, fmt.Errorf("namedpipe.Listen: %w", err)
} }
return lc, 0, nil return lc, nil
} }

View File

@ -12,10 +12,6 @@
"time" "time"
) )
// WindowsLocalPort is the default localhost TCP port
// used by safesocket on Windows.
const WindowsLocalPort = 41112
type closeable interface { type closeable interface {
CloseRead() error CloseRead() error
CloseWrite() error CloseWrite() error
@ -95,7 +91,7 @@ type ConnectionStrategy struct {
// It falls back to auto-discovery across sandbox boundaries on macOS. // It falls back to auto-discovery across sandbox boundaries on macOS.
// TODO: maybe take no arguments, since path is irrelevant on Windows? Discussion in PR 3499. // TODO: maybe take no arguments, since path is irrelevant on Windows? Discussion in PR 3499.
func DefaultConnectionStrategy(path string) *ConnectionStrategy { func DefaultConnectionStrategy(path string) *ConnectionStrategy {
return &ConnectionStrategy{path: path, port: WindowsLocalPort} return &ConnectionStrategy{path: path}
} }
// Connect connects to tailscaled using s // Connect connects to tailscaled using s
@ -111,10 +107,9 @@ func Connect(s *ConnectionStrategy) (net.Conn, error) {
} }
// Listen returns a listener either on Unix socket path (on Unix), or // Listen returns a listener either on Unix socket path (on Unix), or
// the localhost port (on Windows). // the NamedPipe path (on Windows).
// If port is 0, the returned gotPort says which port was selected on Windows. func Listen(path string) (net.Listener, error) {
func Listen(path string, port uint16) (_ net.Listener, gotPort uint16, _ error) { return listen(path)
return listen(path, port)
} }
var ( var (

View File

@ -11,9 +11,8 @@
const memName = "Tailscale-IPN" const memName = "Tailscale-IPN"
func listen(path string, port uint16) (_ net.Listener, gotPort uint16, _ error) { func listen(path string) (net.Listener, error) {
ln, err := memconn.Listen("memu", memName) return memconn.Listen("memu", memName)
return ln, 1, err
} }
func connect(_ *ConnectionStrategy) (net.Conn, error) { func connect(_ *ConnectionStrategy) (net.Conn, error) {

View File

@ -23,7 +23,7 @@ func connect(s *ConnectionStrategy) (net.Conn, error) {
return net.Dial("unix", s.path) return net.Dial("unix", s.path)
} }
func listen(path string, port uint16) (ln net.Listener, _ uint16, err error) { func listen(path string) (net.Listener, error) {
// Unix sockets hang around in the filesystem even after nobody // Unix sockets hang around in the filesystem even after nobody
// is listening on them. (Which is really unfortunate but long- // is listening on them. (Which is really unfortunate but long-
// entrenched semantics.) Try connecting first; if it works, then // entrenched semantics.) Try connecting first; if it works, then
@ -38,9 +38,9 @@ func listen(path string, port uint16) (ln net.Listener, _ uint16, err error) {
if err == nil { if err == nil {
c.Close() c.Close()
if tailscaledRunningUnderLaunchd() { if tailscaledRunningUnderLaunchd() {
return nil, 0, fmt.Errorf("%v: address already in use; tailscaled already running under launchd (to stop, run: $ sudo launchctl stop com.tailscale.tailscaled)", path) return nil, fmt.Errorf("%v: address already in use; tailscaled already running under launchd (to stop, run: $ sudo launchctl stop com.tailscale.tailscaled)", path)
} }
return nil, 0, fmt.Errorf("%v: address already in use", path) return nil, fmt.Errorf("%v: address already in use", path)
} }
_ = os.Remove(path) _ = os.Remove(path)
@ -66,10 +66,10 @@ func listen(path string, port uint16) (ln net.Listener, _ uint16, err error) {
} }
pipe, err := net.Listen("unix", path) pipe, err := net.Listen("unix", path)
if err != nil { if err != nil {
return nil, 0, err return nil, err
} }
os.Chmod(path, perm) os.Chmod(path, perm)
return pipe, 0, err return pipe, err
} }
func tailscaledRunningUnderLaunchd() bool { func tailscaledRunningUnderLaunchd() bool {