fix(server): track and close child TLS managers in multi-server mode
This commit is contained in:
parent
291cc74c2d
commit
f240892475
@ -43,6 +43,14 @@ func (s *Server) cleanupResources() {
|
|||||||
s.tlsManager.Close()
|
s.tlsManager.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 关闭多服务器模式下创建的子 TLS 管理器
|
||||||
|
s.tlsManagersMu.Lock()
|
||||||
|
for _, m := range s.tlsManagers {
|
||||||
|
m.Close()
|
||||||
|
}
|
||||||
|
s.tlsManagers = nil
|
||||||
|
s.tlsManagersMu.Unlock()
|
||||||
|
|
||||||
// 关闭 AccessControl (释放 GeoIP 资源)
|
// 关闭 AccessControl (释放 GeoIP 资源)
|
||||||
s.accessControlsMu.Lock()
|
s.accessControlsMu.Lock()
|
||||||
for _, ac := range s.accessControls {
|
for _, ac := range s.accessControls {
|
||||||
|
|||||||
@ -63,6 +63,8 @@ type Server struct {
|
|||||||
handler fasthttp.RequestHandler
|
handler fasthttp.RequestHandler
|
||||||
resolver resolver.Resolver
|
resolver resolver.Resolver
|
||||||
tlsManager *ssl.TLSManager
|
tlsManager *ssl.TLSManager
|
||||||
|
tlsManagers []*ssl.TLSManager
|
||||||
|
tlsManagersMu sync.Mutex
|
||||||
accessLogMiddleware *accesslog.AccessLog
|
accessLogMiddleware *accesslog.AccessLog
|
||||||
luaEngine *lua.LuaEngine
|
luaEngine *lua.LuaEngine
|
||||||
accessControl *security.AccessControl
|
accessControl *security.AccessControl
|
||||||
@ -768,6 +770,10 @@ func (s *Server) startMultiServerMode() error {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
fastSrv.TLSConfig = tlsManager.GetTLSConfig()
|
fastSrv.TLSConfig = tlsManager.GetTLSConfig()
|
||||||
|
|
||||||
|
s.tlsManagersMu.Lock()
|
||||||
|
s.tlsManagers = append(s.tlsManagers, tlsManager)
|
||||||
|
s.tlsManagersMu.Unlock()
|
||||||
}
|
}
|
||||||
|
|
||||||
s.fastServers[idx] = fastSrv
|
s.fastServers[idx] = fastSrv
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user