Shutdown gracefully stops the STUN server.
()
| 154 | |
| 155 | // Shutdown gracefully stops the STUN server. |
| 156 | func (s *Server) Shutdown() error { |
| 157 | s.logger.Info("shutting down STUN server") |
| 158 | |
| 159 | var merr *multierror.Error |
| 160 | |
| 161 | for _, conn := range s.conns { |
| 162 | if err := conn.Close(); err != nil && !errors.Is(err, net.ErrClosed) { |
| 163 | merr = multierror.Append(merr, fmt.Errorf("close STUN UDP connection: %w", err)) |
| 164 | } |
| 165 | } |
| 166 | |
| 167 | // Wait for all readLoops to finish |
| 168 | s.wg.Wait() |
| 169 | return nberrors.FormatErrorOrNil(merr) |
| 170 | } |