fix(server): track and close child TLS managers in multi-server mode

This commit is contained in:
xfy 2026-06-17 10:54:58 +08:00
parent 291cc74c2d
commit f240892475
2 changed files with 14 additions and 0 deletions

View File

@ -43,6 +43,14 @@ func (s *Server) cleanupResources() {
s.tlsManager.Close()
}
// 关闭多服务器模式下创建的子 TLS 管理器
s.tlsManagersMu.Lock()
for _, m := range s.tlsManagers {
m.Close()
}
s.tlsManagers = nil
s.tlsManagersMu.Unlock()
// 关闭 AccessControl (释放 GeoIP 资源)
s.accessControlsMu.Lock()
for _, ac := range s.accessControls {

View File

@ -63,6 +63,8 @@ type Server struct {
handler fasthttp.RequestHandler
resolver resolver.Resolver
tlsManager *ssl.TLSManager
tlsManagers []*ssl.TLSManager
tlsManagersMu sync.Mutex
accessLogMiddleware *accesslog.AccessLog
luaEngine *lua.LuaEngine
accessControl *security.AccessControl
@ -768,6 +770,10 @@ func (s *Server) startMultiServerMode() error {
return
}
fastSrv.TLSConfig = tlsManager.GetTLSConfig()
s.tlsManagersMu.Lock()
s.tlsManagers = append(s.tlsManagers, tlsManager)
s.tlsManagersMu.Unlock()
}
s.fastServers[idx] = fastSrv