[AltServer] Fixes potential race condition crash when managing connections

This commit is contained in:
Riley Testut
2022-09-14 13:11:26 -07:00
committed by Joseph Mattello
parent eda4dd6aec
commit e3c331c911

View File

@@ -41,6 +41,7 @@ public class ConnectionManager<RequestHandlerType: RequestHandler>
public var isStarted = false
private var connections = [Connection]()
private let connectionsLock = NSLock()
public init(requestHandler: RequestHandlerType, connectionHandlers: [ConnectionHandler])
{
@@ -88,6 +89,9 @@ private extension ConnectionManager
{
func prepare(_ connection: Connection)
{
self.connectionsLock.lock()
defer { self.connectionsLock.unlock() }
guard !self.connections.contains(where: { $0 === connection }) else { return }
self.connections.append(connection)
@@ -96,6 +100,9 @@ private extension ConnectionManager
func disconnect(_ connection: Connection)
{
self.connectionsLock.lock()
defer { self.connectionsLock.unlock() }
guard let index = self.connections.firstIndex(where: { $0 === connection }) else { return }
self.connections.remove(at: index)
}