Close stops the server and cleans up resources.
()
| 90 | |
| 91 | // Close stops the server and cleans up resources. |
| 92 | func (s *Server) Close() error { |
| 93 | s.mu.Lock() |
| 94 | |
| 95 | if s.listener == nil { |
| 96 | s.mu.Unlock() |
| 97 | return nil |
| 98 | } |
| 99 | |
| 100 | s.logger.Info(s.ctx, "stopping agent socket server") |
| 101 | |
| 102 | s.cancel() |
| 103 | |
| 104 | if err := s.listener.Close(); err != nil { |
| 105 | s.logger.Warn(s.ctx, "error closing socket listener", slog.Error(err)) |
| 106 | } |
| 107 | |
| 108 | s.listener = nil |
| 109 | |
| 110 | s.mu.Unlock() |
| 111 | |
| 112 | // Wait for all connections to finish |
| 113 | s.wg.Wait() |
| 114 | |
| 115 | if err := cleanupSocket(s.path); err != nil { |
| 116 | s.logger.Warn(s.ctx, "error cleaning up socket file", slog.Error(err)) |
| 117 | } |
| 118 | |
| 119 | s.logger.Info(s.ctx, "agent socket server stopped") |
| 120 | |
| 121 | return nil |
| 122 | } |
| 123 | |
| 124 | // SetAgentAPI sets the agent API client used to forward requests |
| 125 | // to coderd. |