diff --git a/tailroute.go b/tailroute.go index af83e5332d615ea1bd54846f0939eca8ea2c8a97..01e4d1695677207fc1c33e4eab9bfffeccaa7396 100644 --- a/tailroute.go +++ b/tailroute.go @@ -5,6 +5,7 @@ "context" "crypto/tls" "errors" "fmt" + "log" "net" "net/http" "os" @@ -94,13 +95,17 @@ if err != nil { return err } - for { - upCtx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - status, err := s.Up(upCtx) - if err == nil && status != nil { - break + // wait for tailscale to start before trying to fetch cert names + for i := 0; i < 60; i++ { + st, err := lc.Status(context.Background()) + if err != nil { + log.Printf("error retrieving tailscale status; retrying: %v", err) + } else { + if st.BackendState == "Running" { + break + } } + time.Sleep(time.Second) } ctx := context.Background()