Create a system proxy change after receiving a network map

This is experimental and needs more test.

the purpose of this change is to validate that a TLS connection stuck using old routes because of keepalive settings on the remote webserver are reset once netbird receives a network map
This commit is contained in:
mlsmaycon
2026-02-01 10:23:25 +01:00
parent ea41cf2d2c
commit bfeb60fbb5

View File

@@ -49,7 +49,6 @@ import (
"github.com/netbirdio/netbird/client/internal/rosenpass" "github.com/netbirdio/netbird/client/internal/rosenpass"
"github.com/netbirdio/netbird/client/internal/routemanager" "github.com/netbirdio/netbird/client/internal/routemanager"
"github.com/netbirdio/netbird/client/internal/routemanager/systemops" "github.com/netbirdio/netbird/client/internal/routemanager/systemops"
"github.com/netbirdio/netbird/client/internal/routemanager/vars"
"github.com/netbirdio/netbird/client/internal/statemanager" "github.com/netbirdio/netbird/client/internal/statemanager"
"github.com/netbirdio/netbird/client/internal/updatemanager" "github.com/netbirdio/netbird/client/internal/updatemanager"
"github.com/netbirdio/netbird/client/jobexec" "github.com/netbirdio/netbird/client/jobexec"
@@ -2326,18 +2325,6 @@ func createFile(path string) error {
return file.Close() return file.Close()
} }
// containsExitNodeRoute checks if the routes contain an exit node (0.0.0.0/0).
func containsExitNodeRoute(clientRoutes route.HAMap) bool {
for _, routes := range clientRoutes {
for _, r := range routes {
if r.Network.String() == vars.ExitNodeCIDR {
return true
}
}
}
return false
}
// updateSystemProxy triggers a proxy enable/disable cycle after the network map is updated. // updateSystemProxy triggers a proxy enable/disable cycle after the network map is updated.
func (e *Engine) updateSystemProxy(clientRoutes route.HAMap) { func (e *Engine) updateSystemProxy(clientRoutes route.HAMap) {
if runtime.GOOS != "darwin" || e.proxyManager == nil { if runtime.GOOS != "darwin" || e.proxyManager == nil {
@@ -2346,13 +2333,13 @@ func (e *Engine) updateSystemProxy(clientRoutes route.HAMap) {
} }
if err := e.proxyManager.EnableWebProxy(e.config.ProxyHost, e.config.ProxyPort); err != nil { if err := e.proxyManager.EnableWebProxy(e.config.ProxyHost, e.config.ProxyPort); err != nil {
log.Error("enable system proxy: %v", err) log.Errorf("enable system proxy: %v", err)
return return
} }
log.Error("system proxy enabled after network map update") log.Error("system proxy enabled after network map update")
if err := e.proxyManager.DisableWebProxy(); err != nil { if err := e.proxyManager.DisableWebProxy(); err != nil {
log.Error("disable system proxy: %v", err) log.Errorf("disable system proxy: %v", err)
return return
} }
log.Error("system proxy disabled after network map update") log.Error("system proxy disabled after network map update")