mirror of
https://github.com/swift-server/swift-openapi-async-http-client.git
synced 2026-05-03 07:42:29 +00:00
Handle large payloads on 32bit platforms gracefully (#29)
Handle large payloads on 32bit platforms gracefully
### Motivation
If there's a request payload with a number of bytes that can't fit into 32 bits, we'd crash.
### Modifications
Use a graceful initializer and use `.unknown` (so no `content-length` will be sent) if the size exceeds the max of a 32bit int.
### Result
No crash for large payloads on 32bit platforms.
### Test Plan
Tests pass.
Reviewed by: dnadoba
Builds:
✔︎ pull request validation (5.10) - Build finished.
✔︎ pull request validation (5.9) - Build finished.
✔︎ pull request validation (nightly) - Build finished.
✔︎ pull request validation (soundness) - Build finished.
https://github.com/swift-server/swift-openapi-async-http-client/pull/29
This commit is contained in:
@@ -181,7 +181,8 @@ public struct AsyncHTTPClientTransport: ClientTransport {
|
||||
let length: HTTPClientRequest.Body.Length
|
||||
switch body.length {
|
||||
case .unknown: length = .unknown
|
||||
case .known(let count): length = .known(Int(count))
|
||||
case .known(let count):
|
||||
if let intValue = Int(exactly: count) { length = .known(intValue) } else { length = .unknown }
|
||||
}
|
||||
clientRequest.body = .stream(body.map { .init(bytes: $0) }, length: length)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user