diff --git a/core/src/main/golang/bridge/proxies.go b/core/src/main/golang/bridge/proxies.go index 0d1b729..8f8004d 100644 --- a/core/src/main/golang/bridge/proxies.go +++ b/core/src/main/golang/bridge/proxies.go @@ -122,11 +122,26 @@ func SetSelectedProxy(name, proxy string) bool { return false } + selected := selector.Now() + if selected == proxy { + log.Infoln("Set " + name + " -> " + proxy) + return true + } + if err := selector.Set(proxy); err != nil { log.Infoln("Set %s: %s", name, err.Error()) return false } + for _, conn := range tunnel.DefaultManager.Snapshot().Connections { + for _, p := range conn.Chain() { + if p == proxy { + _ = conn.Close() + break + } + } + } + log.Infoln("Set " + name + " -> " + proxy) return true