Skip to content

Commit 1a892ab

Browse files
committed
fix init overlay
1 parent 1c692c2 commit 1a892ab

1 file changed

Lines changed: 28 additions & 27 deletions

File tree

portal/server.go

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -231,39 +231,14 @@ func (s *Server) Start(ctx context.Context, apiMux *http.ServeMux) error {
231231
s.group = group
232232

233233
if s.wgConfig.PrivateKey != "" {
234-
var snapshot map[string]types.RelayState
235-
if s.relaySet != nil {
236-
snapshot = s.relaySet.Snapshot()
237-
}
238-
peerMux := http.NewServeMux()
239-
peerMux.HandleFunc(types.PathRoot, s.handleRoot)
240-
peerMux.HandleFunc(types.PathHealthz, s.handleHealthz)
241-
peerMux.HandleFunc(types.PathDiscovery, func(w http.ResponseWriter, r *http.Request) {
242-
if !s.DiscoveryEnabled() {
243-
http.NotFound(w, r)
244-
return
245-
}
246-
s.handleRelayDiscovery(w, r)
247-
})
248-
overlay, err := wireguard.NewOverlay(s.wgConfig, peerMux)
249-
if err != nil {
234+
if err := s.startOverlay(); err != nil {
250235
acmeManager.Stop()
251236
_ = apiServer.Close()
252237
_ = apiCloser.Close()
253238
_ = sniListener.Close()
254239
cancel()
255-
return fmt.Errorf("start wireguard overlay: %w", err)
256-
}
257-
if err := overlay.Sync(s.cfg.PortalURL, snapshot); err != nil {
258-
acmeManager.Stop()
259-
_ = apiServer.Close()
260-
_ = apiCloser.Close()
261-
_ = sniListener.Close()
262-
_ = overlay.Shutdown(context.Background())
263-
cancel()
264-
return fmt.Errorf("sync wireguard peers: %w", err)
240+
return err
265241
}
266-
s.overlay = overlay
267242
}
268243

269244
group.Go(s.runAPIServer)
@@ -516,6 +491,32 @@ func (s *Server) runSNIListener(ctx context.Context) error {
516491
}
517492
}
518493

494+
func (s *Server) startOverlay() error {
495+
peerMux := http.NewServeMux()
496+
peerMux.HandleFunc(types.PathRoot, s.handleRoot)
497+
peerMux.HandleFunc(types.PathHealthz, s.handleHealthz)
498+
peerMux.HandleFunc(types.PathDiscovery, func(w http.ResponseWriter, r *http.Request) {
499+
if !s.DiscoveryEnabled() {
500+
http.NotFound(w, r)
501+
return
502+
}
503+
s.handleRelayDiscovery(w, r)
504+
})
505+
506+
overlay, err := wireguard.NewOverlay(s.wgConfig, peerMux)
507+
if err != nil {
508+
return fmt.Errorf("start wireguard overlay: %w", err)
509+
}
510+
511+
if err := overlay.Sync(s.cfg.PortalURL, s.relaySet.Snapshot()); err != nil {
512+
_ = overlay.Shutdown(context.Background())
513+
return fmt.Errorf("sync wireguard peers: %w", err)
514+
}
515+
516+
s.overlay = overlay
517+
return nil
518+
}
519+
519520
func (s *Server) startQUICTunnelListener(apiTLS keyless.TLSMaterialConfig) error {
520521
if len(apiTLS.KeyPEM) == 0 {
521522
return fmt.Errorf("quic tunnel requires api tls key")

0 commit comments

Comments
 (0)