in machine.go [980:1009]
func (m *Machine) waitForSocket(timeout time.Duration, exitchan chan error) error {
ctx, cancel := context.WithTimeout(context.Background(), timeout)
ticker := time.NewTicker(10 * time.Millisecond)
defer func() {
cancel()
ticker.Stop()
}()
for {
select {
case <-ctx.Done():
return ctx.Err()
case err := <-exitchan:
return err
case <-ticker.C:
if _, err := os.Stat(m.Cfg.SocketPath); err != nil {
continue
}
// Send test HTTP request to make sure socket is available
if _, err := m.client.GetMachineConfiguration(); err != nil {
continue
}
return nil
}
}
}