Feature: close all connections on reset

This commit is contained in:
kr328 2022-04-20 00:39:46 +08:00
parent 5dbd94e42c
commit bf59ead3b2
2 changed files with 7 additions and 0 deletions

View File

@ -36,6 +36,7 @@ func coreInit(home, versionName C.c_string, sdkVersion C.int) {
func reset() { func reset() {
config.LoadDefault() config.LoadDefault()
tunnel.ResetStatistic() tunnel.ResetStatistic()
tunnel.CloseAllConnections()
runtime.GC() runtime.GC()
} }

View File

@ -5,6 +5,12 @@ import (
"github.com/Dreamacro/clash/tunnel/statistic" "github.com/Dreamacro/clash/tunnel/statistic"
) )
func CloseAllConnections() {
for _, c := range statistic.DefaultManager.Snapshot().Connections {
_ = c.Close()
}
}
func closeMatch(filter func(conn C.Conn) bool) { func closeMatch(filter func(conn C.Conn) bool) {
for _, c := range statistic.DefaultManager.Snapshot().Connections { for _, c := range statistic.DefaultManager.Snapshot().Connections {
if cc, ok := c.(C.Conn); ok { if cc, ok := c.(C.Conn); ok {