fix(macos): prevent control socket hangs

This commit is contained in:
Peter Steinberger
2025-12-13 00:51:39 +00:00
parent 19ce08b4d0
commit f98ab2d037
3 changed files with 175 additions and 68 deletions

View File

@@ -53,12 +53,16 @@ import Testing
}
func receive() async throws -> URLSessionWebSocketTask.Message {
let (delayMs, msg): (Int, URLSessionWebSocketTask.Message) = switch self.response {
case let .helloOk(delayMs):
let delayMs: Int
let msg: URLSessionWebSocketTask.Message
switch self.response {
case let .helloOk(ms):
delayMs = ms
let id = self.connectRequestID.withLock { $0 } ?? "connect"
(delayMs, .data(Self.connectOkData(id: id)))
case let .invalid(delayMs):
(delayMs, .string("not json"))
msg = .data(Self.connectOkData(id: id))
case let .invalid(ms):
delayMs = ms
msg = .string("not json")
}
try await Task.sleep(nanoseconds: UInt64(delayMs) * 1_000_000)
return msg