diff --git a/cmd/ctrld/cli.go b/cmd/ctrld/cli.go index 95ccb49..95e5c30 100644 --- a/cmd/ctrld/cli.go +++ b/cmd/ctrld/cli.go @@ -1167,16 +1167,13 @@ func selfCheckStatus(s service.Service) service.Status { if curStatus != service.StatusRunning { return curStatus } - if _, err := cc.post("/", nil); err != nil { - // Do not count attempt if the server is not ready yet. - if errUrlConnRefused(err) { - bo.BackOff(ctx, err) - continue - } - mainLog.Load().Warn().Err(err).Msg("could not ping socket control server") - return service.StatusUnknown + if _, err := cc.post("/", nil); err == nil { + // Server was started, stop pinging. + break } - break + // The socket control server is not ready yet, backoff for waiting it to be ready. + bo.BackOff(ctx, err) + continue } resp, err := cc.post(startedPath, nil) if err != nil { diff --git a/cmd/ctrld/control_server.go b/cmd/ctrld/control_server.go index 20dec83..5118113 100644 --- a/cmd/ctrld/control_server.go +++ b/cmd/ctrld/control_server.go @@ -35,6 +35,9 @@ func newControlServer(addr string) (*controlServer, error) { func (s *controlServer) start() error { _ = os.Remove(s.addr) unixListener, err := net.Listen("unix", s.addr) + if l, ok := unixListener.(*net.UnixListener); ok { + l.SetUnlinkOnClose(true) + } if err != nil { return err }