From fae27656c238c0c9e60719919aa7eb60172ee9fd Mon Sep 17 00:00:00 2001 From: Viktor Liu Date: Sat, 15 Nov 2025 14:41:56 +0100 Subject: [PATCH] Reorder subsystem shutdown order so DNS goes last --- client/internal/engine.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/client/internal/engine.go b/client/internal/engine.go index ebc05c453..805a331dd 100644 --- a/client/internal/engine.go +++ b/client/internal/engine.go @@ -292,9 +292,6 @@ func (e *Engine) Stop() error { } log.Info("Network monitor: stopped") - // stop/restore DNS first so dbus and friends don't complain because of a missing interface - e.stopDNSServer() - if e.ingressGatewayMgr != nil { if err := e.ingressGatewayMgr.Close(); err != nil { log.Warnf("failed to cleanup forward rules: %v", err) @@ -302,12 +299,6 @@ func (e *Engine) Stop() error { e.ingressGatewayMgr = nil } - e.stopDNSForwarder() - - if e.routeManager != nil { - e.routeManager.Stop(e.stateManager) - } - if e.srWatcher != nil { e.srWatcher.Close() } @@ -320,6 +311,16 @@ func (e *Engine) Stop() error { return fmt.Errorf("failed to remove all peers: %s", err) } + if e.routeManager != nil { + e.routeManager.Stop(e.stateManager) + } + + e.stopDNSForwarder() + + // stop/restore DNS after peers are closed but before interface goes down + // so dbus and friends don't complain because of a missing interface + e.stopDNSServer() + if e.cancel != nil { e.cancel() }