CARVIEW |
Select Language
HTTP/2 200
date: Sun, 27 Jul 2025 09:06:49 GMT
content-type: text/html; charset=utf-8
vary: X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With
etag: W/"0e411a7dcada82652fc5b94cc5c63316"
cache-control: max-age=0, private, must-revalidate
strict-transport-security: max-age=31536000; includeSubdomains; preload
x-frame-options: deny
x-content-type-options: nosniff
x-xss-protection: 0
referrer-policy: no-referrer-when-downgrade
content-security-policy: default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/
server: github.com
content-encoding: gzip
accept-ranges: bytes
set-cookie: _gh_sess=c%2FYYczOuHyUWYK%2FwpBt8gWZxJdhkd91%2FyfprSbWiuuslISgZ5wugFaNLtjf3BG42qIcMQMdCVdAaYgNQmxZ%2BaDPBsiH2KkVu8C7BKaT%2FgovznQYkXfKnXZEaYwrG3DCdwKLEcPK8rKpGMzRnO686lUbxNGA5UnAjhB1PvALR%2BoeDlzNKK9r6EFKSBV9rTwyp0e0XoZBl7hdaIX7C3m4x8668lD4VnxkwtaVoo2BfKTfgvPjZsfjE22FR5J7ysTjfQocFvtrSPIFj8KiRNrHcBg%3D%3D--vOKrlifjvgsfwf%2Bw--uXwQHW7xMhDPRCASZK%2FQ%2FQ%3D%3D; Path=/; HttpOnly; Secure; SameSite=Lax
set-cookie: _octo=GH1.1.329327076.1753607208; Path=/; Domain=github.com; Expires=Mon, 27 Jul 2026 09:06:48 GMT; Secure; SameSite=Lax
set-cookie: logged_in=no; Path=/; Domain=github.com; Expires=Mon, 27 Jul 2026 09:06:48 GMT; HttpOnly; Secure; SameSite=Lax
x-github-request-id: BEA4:5FFA9:CB07F4:10C7ED5:6885EC28
Tags · apple/swift-openapi-urlsession · GitHub
Toggle 1.0.1's commit message
Toggle 1.0.0's commit message
Toggle 1.0.0-alpha.1's commit message
Toggle 0.3.1's commit message
Toggle 0.3.0's commit message
Toggle 0.2.2's commit message
Toggle 0.2.1's commit message
Toggle 0.2.0's commit message
Skip to content
Navigation Menu
{{ message }}
-
Notifications
You must be signed in to change notification settings - Fork 41
Tags: apple/swift-openapi-urlsession
Tags
1.0.1
Set OutputStream.delegate to nil in HTTPBodyOutputStreamBridge.deinit (… …#46) ### Motivation When running the cancellation tests in a loop, very occasionally there would be a crash with the following backtrace: ``` #0 0x000000018aa008d4 in objc_opt_respondsToSelector () #1 0x000000018aea3410 in _outputStreamCallbackFunc () #2 0x000000018aea3310 in _signalEventSync () #3 0x000000018aeecdb0 in ___signalEventQueue_block_invoke () #4 0x000000018abe6cb8 in _dispatch_call_block_and_release () #5 0x000000018abe8910 in _dispatch_client_callout () #6 0x000000018abefea4 in _dispatch_lane_serial_drain () #7 0x000000018abf0a08 in _dispatch_lane_invoke () #8 0x000000018abfb61c in _dispatch_root_queue_drain_deferred_wlh () #9 0x000000018abfae90 in _dispatch_workloop_worker_thread () #10 0x000000018ad96114 in _pthread_wqthread () ``` This seems to indicate that the output stream is trying to access its delegate. However, when running with debug logging enabled I can see that the delegate has already been deinitialized. This is likely a result of the delegate itself owning the stream and setting the stream delegate to `self`, which IIUC is an established pattern. This presents a race in teardown. ### Modifications This patch sets the output stream delegate to `nil` in the delegate `deinit`. ### Result No attempts to call the delegate will happen after it is has been deinitailzed. ### Test Plan With this patch, the failing test passes when run an order of magnitude more times than were required to reliably reproduce the crash without the patch.
1.0.0
More checks for task cancellation and tests (#44) ### Motivation In our fallback, buffered implementation, we did not use a task cancellation handler so were not proactively cancelling the URLSession task when the Swift concurrency task was cancelled. Additionally, while we _did_ have a task cancellation handler in the streaming implementation, so the URLSession task would be cancelled, we were not actively checking for task cancellation as often as we could. ### Modifications - Added more cooperative task cancellation. - Added tests for both implementations that when the parent task for the client request is cancelled that we get something sensible. Note that in some cases, the request will succeed. In the cases where the request fails, it will surface as a `ClientError` to the user where the `underlyingError` is either `Swift.CancellationError` or `URLError` with `code == .cancelled`. ### Result More cooperative task and URLSession task cancellation and more thorough tests. ### Test Plan Added unit tests.
1.0.0-alpha.1
Bump to 1.0.0-alpha.1 (#36) Bump to 1.0.0-alpha.1 ### Motivation Prepare for 1.0.0-alpha.1. ### Modifications - Updated runtime dependency. - Updated docs. ### Result Ready to tag 1.0.0-alpha.1. ### Test Plan All tests pass. Reviewed by: simonjbeaumont 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. #36
0.3.1
Replace AsyncBackpressuredStream with updated implementation (#29) ### Motivation As a follow up to #27, we noted it would be good to align on the latest draft implementation of SE-0406 (AsyncStream with backpressure) to both pickup the latest improvements in performance and correctness, and to minimise the churn if/when this lands in the standard library or standalone package. ### Modifications In order to simplify reviewing the following modifications have been made in independent commits: * `Add updated SE-0406 implementation as BufferedStream, incl. tests`: Skim over this—it's vendored in wholesale. * `Port the custom watermark support to BufferedStream`: Skim over this—it's a 1:1 port of the logic that was added to `AsyncBackpressuredStream`. * `Switch from AsyncBackpressuredStream to BufferedStream in delegate`: Review this—it's a minimal change. * `Remove AsyncBackpressuredStream and its vendored locks`: Skim over this—it's removing the old implementation. ### Result No functional change, but the internal async sequence we're using should be more robust, performant, and more likely to match a future standard library type. ### Test Plan - The new vendored `BufferedStream` actually comes with a much greater number of vendored tests than the previous revision. - Also ported the tests from this repo for the custom watermark logic. - All our URLSessionTransport-specific tests continue to pass. --------- Signed-off-by: Si Beaumont <beaumont@apple.com>
0.3.0
[URLSession Transport] Async bodies + swift-http-types adoption (#15) [URLSession Transport] Async bodies + swift-http-types adoption ### Motivation URLSession transport changes of the approved proposals apple/swift-openapi-generator#255 and apple/swift-openapi-generator#254. ### Modifications - Adapts to the runtime changes, depends on HTTPTypes now. - Doesn't do streaming yet, we'll addressed that separately, continues to buffer for now (apple/swift-openapi-generator#301) ### Result Transport works with the 0.3.0 runtime API of. ### Test Plan Adapted tests. Reviewed by: simonjbeaumont Builds: ✔︎ pull request validation (5.8) - Build finished. ✔︎ pull request validation (5.9) - Build finished. ✔︎ pull request validation (nightly) - Build finished. ✔︎ pull request validation (soundness) - Build finished. #15
0.2.2
Fix double encoding of path parameters (#14) Fix double encoding of path parameters ### Motivation Fixes apple/swift-openapi-generator#251. ### Modifications Use the already escaped path setter on `URLComponents` to avoid the second encoding pass. ### Result Path parameters that needed escaping are only escaped once, not twice. ### Test Plan Adapted the existing unit test to cover a path item that needs escaping. Reviewed by: simonjbeaumont Builds: ✔︎ pull request validation (5.8) - Build finished. ✔︎ pull request validation (5.9) - Build finished. ✔︎ pull request validation (nightly) - Build finished. ✔︎ pull request validation (soundness) - Build finished. #14
0.2.1
Docs fixes (#13) Docs fixes ### Motivation Docs should be correct. ### Modifications Update docs with the latest versions. ### Result N/A ### Test Plan N/A Reviewed by: dnadoba Builds: ✔︎ pull request validation (5.8) - Build finished. ✔︎ pull request validation (5.9) - Build finished. ✔︎ pull request validation (nightly) - Build finished. ✔︎ pull request validation (soundness) - Build finished. #13
0.2.0
Prepare being compatible with runtime 0.2.0 release (#12) Prepare being compatible with runtime 0.2.0 release ### Motivation Runtime 0.2.0 is compatible with 0.1.3+ in the APIs adopted in the transport, so just reflect that in the manifest. ### Modifications Increased the supported runtime range to include 0.2.x. ### Result Once released, folks will be able to use 0.1.x of this transport with both 0.1.x and 0.2.x of runtime. ### Test Plan Will be manually tested once runtime 0.2.0 is released. Reviewed by: gjcairo Builds: ✔︎ pull request validation (5.8) - Build finished. ✔︎ pull request validation (5.9) - Build finished. ✔︎ pull request validation (nightly) - Build finished. ✔︎ pull request validation (soundness) - Build finished. #12
PreviousNext
You can’t perform that action at this time.