mirror of
https://github.com/callstack/agent-device.git
synced 2026-09-14 20:06:34 +08:00
[codex] close iOS runner responses gracefully (#306)
* fix: close iOS runner responses gracefully * fix: close runner connection after send
This commit is contained in:
committed by
GitHub
parent
f984a655ce
commit
d9d94f0f5a
@@ -21,27 +21,39 @@ extension RunnerTests {
|
||||
status: 413,
|
||||
response: Response(ok: false, error: ErrorPayload(message: "request too large"))
|
||||
)
|
||||
connection.send(content: response, completion: .contentProcessed { [weak self] _ in
|
||||
connection.cancel()
|
||||
self.sendResponse(response, over: connection) { [weak self] in
|
||||
self?.finish()
|
||||
})
|
||||
}
|
||||
return
|
||||
}
|
||||
let combined = buffer + data
|
||||
if let body = self.parseRequest(data: combined) {
|
||||
let result = self.handleRequestBody(body)
|
||||
connection.send(content: result.data, completion: .contentProcessed { _ in
|
||||
connection.cancel()
|
||||
self.sendResponse(result.data, over: connection) { [weak self] in
|
||||
if result.shouldFinish {
|
||||
self.finish()
|
||||
self?.finish()
|
||||
}
|
||||
})
|
||||
}
|
||||
} else {
|
||||
self.receiveRequest(connection: connection, buffer: combined)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func sendResponse(
|
||||
_ response: Data,
|
||||
over connection: NWConnection,
|
||||
afterSend: @escaping () -> Void = {}
|
||||
) {
|
||||
connection.send(content: response, isComplete: true, completion: .contentProcessed { error in
|
||||
if let error {
|
||||
NSLog("AGENT_DEVICE_RUNNER_SEND_FAILED=%@", String(describing: error))
|
||||
}
|
||||
connection.cancel()
|
||||
afterSend()
|
||||
})
|
||||
}
|
||||
|
||||
private func parseRequest(data: Data) -> Data? {
|
||||
guard let headerEnd = data.range(of: Data("\r\n\r\n".utf8)) else {
|
||||
return nil
|
||||
|
||||
Reference in New Issue
Block a user