From dd45bba76b3ab7d41d593f83fea71e9620ecbe51 Mon Sep 17 00:00:00 2001 From: Maisem Ali Date: Mon, 3 Jan 2022 11:20:40 -0800 Subject: [PATCH] tsnet: add Start method to allow connecting to the tailnet without requiring a call to Dial/Listen. Signed-off-by: Maisem Ali --- tsnet/tsnet.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tsnet/tsnet.go b/tsnet/tsnet.go index 2254b3229..418d545c4 100644 --- a/tsnet/tsnet.go +++ b/tsnet/tsnet.go @@ -67,8 +67,9 @@ type Server struct { } // Dial connects to the address on the tailnet. +// It will start the server if it has not been started yet. func (s *Server) Dial(ctx context.Context, network, address string) (net.Conn, error) { - if err := s.init(); err != nil { + if err := s.Start(); err != nil { return nil, err } return s.dialer.UserDial(ctx, network, address) @@ -80,7 +81,9 @@ func (s *Server) doInit() { } } -func (s *Server) init() error { +// Start connects the server to the tailnet. +// Optional: any calls to Dial/Listen will also call Start. +func (s *Server) Start() error { s.initOnce.Do(s.doInit) return s.initErr } @@ -232,13 +235,14 @@ func (s *Server) forwardTCP(c net.Conn, port uint16) { } // Listen announces only on the Tailscale network. +// It will start the server if it has not been started yet. func (s *Server) Listen(network, addr string) (net.Listener, error) { host, port, err := net.SplitHostPort(addr) if err != nil { return nil, fmt.Errorf("tsnet: %w", err) } - if err := s.init(); err != nil { + if err := s.Start(); err != nil { return nil, err }