diff --git a/go-gost/x/api/config_service.go b/go-gost/x/api/config_service.go index 12c8081..36cd35a 100644 --- a/go-gost/x/api/config_service.go +++ b/go-gost/x/api/config_service.go @@ -624,6 +624,11 @@ func resumeService(ctx *gin.Context) { existingSvc.Close() registry.ServiceRegistry().Unregister(name) + // 强制断开端口的所有连接 + if serviceConfig.Addr != "" { + _ = kill.ForceClosePortConnections(serviceConfig.Addr) + } + // 等待端口释放 time.Sleep(500 * time.Millisecond) @@ -1039,8 +1044,13 @@ func resumeServices(ctx *gin.Context) { str.service.Close() registry.ServiceRegistry().Unregister(str.name) + // 强制断开端口的所有连接 + if str.serviceConfig.Addr != "" { + _ = kill.ForceClosePortConnections(str.serviceConfig.Addr) + } + // 等待端口释放 - time.Sleep(100 * time.Millisecond) + time.Sleep(500 * time.Millisecond) // 重新解析并启动服务 svc, err := parser.ParseService(str.serviceConfig) diff --git a/go-gost/x/socket/service.go b/go-gost/x/socket/service.go index 33b23ae..f2d7d24 100644 --- a/go-gost/x/socket/service.go +++ b/go-gost/x/socket/service.go @@ -397,8 +397,13 @@ func resumeServices(req resumeServicesRequest) error { str.service.Close() registry.ServiceRegistry().Unregister(str.name) + // 强制断开端口的所有连接 + if str.serviceConfig.Addr != "" { + _ = kill.ForceClosePortConnections(str.serviceConfig.Addr) + } + // 等待端口释放 - time.Sleep(100 * time.Millisecond) + time.Sleep(500 * time.Millisecond) // 重新解析并启动服务 svc, err := parser.ParseService(str.serviceConfig)