From 7f31c3d7a402f926acde9d081db4bdf0fddb2ac4 Mon Sep 17 00:00:00 2001 From: gVisor bot Date: Wed, 5 Dec 2018 18:19:30 +0800 Subject: [PATCH] Fix: policy group unexpectedly closed --- config/config.go | 10 ---------- hub/executor/executor.go | 16 +++++++++++++++- hub/route/configs.go | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/config/config.go b/config/config.go index d09b062e..51ed4f2e 100644 --- a/config/config.go +++ b/config/config.go @@ -264,16 +264,6 @@ func parseProxies(cfg *rawConfig) (map[string]C.Proxy, error) { } proxies["GLOBAL"], _ = adapters.NewSelector("GLOBAL", ps) - - // close old goroutine - for _, proxy := range proxies { - switch raw := proxy.(type) { - case *adapters.URLTest: - raw.Close() - case *adapters.Fallback: - raw.Close() - } - } return proxies, nil } diff --git a/hub/executor/executor.go b/hub/executor/executor.go index 60fb56e4..87cf0032 100644 --- a/hub/executor/executor.go +++ b/hub/executor/executor.go @@ -1,6 +1,7 @@ package executor import ( + adapters "github.com/Dreamacro/clash/adapters/outbound" "github.com/Dreamacro/clash/config" C "github.com/Dreamacro/clash/constant" "github.com/Dreamacro/clash/log" @@ -40,7 +41,20 @@ func GetGeneral() *config.General { } func updateProxies(proxies map[string]C.Proxy) { - T.Instance().UpdateProxies(proxies) + tunnel := T.Instance() + oldProxies := tunnel.Proxies() + + // close old goroutine + for _, proxy := range oldProxies { + switch raw := proxy.(type) { + case *adapters.URLTest: + raw.Close() + case *adapters.Fallback: + raw.Close() + } + } + + tunnel.UpdateProxies(proxies) } func updateRules(rules []C.Rule) { diff --git a/hub/route/configs.go b/hub/route/configs.go index 45e1a99e..bf4f89ef 100644 --- a/hub/route/configs.go +++ b/hub/route/configs.go @@ -72,7 +72,7 @@ func patchConfigs(w http.ResponseWriter, r *http.Request) { } type updateConfigRequest struct { - Path string `json:"path"` + Path string `json:"path"` } func updateConfigs(w http.ResponseWriter, r *http.Request) {