fix(cfnetwork): preserve shared sessions and delegate-queue completions

Ignore both invalidation methods on the shared session; deliver task completion through the owning session delegate queue. Extend the standalone probe to exercise singleton reuse and a suspended custom queue. Require stable old-client process identities and complete window data before optional recovery, and continue launch after shutdown failures.
This commit is contained in:
lucannez64 committed 2026-10-18 14:16:32 +02:00
1 parent c0f83b399f
commit 1d4f7fae0c
8 files changed
+171 -41

No files matched your search

+8 -3
View File
@@ -31,7 +31,9 @@ The patch check uses temporary base indexes and does not reset or modify the sou
## NSURLSession lifecycle regression
After configuring and building the patched Darling source:
After configuring, building and installing the patched Darling runtime (including
CFNetwork), run the probe. Supply `--frameworks` and `--libraries` when using
staged overlays instead of the installed runtime:
```sh
python3 tools/build-riot-urlsession-check.py
@@ -53,8 +55,11 @@ overlays, and keeps diagnostics in mode-0600 `build/urlsession-check.log`.
Expected checks: five successful HTTP GETs with exact response bytes/status;
connection refusal delivered as an error; repeated resume/cancel without
duplicate completion; finish waiting for task completion; and session
invalidation delivered once for both graceful finish and cancellation.
Expected output includes `URLSESSION_PASS` and `LIFECYCLE_PASS`. The original
invalidation delivered once for both graceful finish and cancellation; shared-session
invalidation leaving later requests usable; and completion delivery honoring a
suspended custom delegate queue.
Expected output includes `URLSESSION_PASS`, `LIFECYCLE_PASS`,
`SHARED_SESSION_PASS` and `QUEUE_PASS`. The original
runtime aborts on missing data-task initialization or session invalidation.
These checks do not establish full NSURLSession conformance or transport-level
interruption of an already-running request.
+5
View File
@@ -412,3 +412,8 @@ If a black fullscreen game has only its normal Metal child and becomes visible a
### Visible cursor while relative on Xwayland (PR #18)
When Xwayland does not honour warps, the virtual cursor follows real pointer motion and application warps leave it in place. Expected warp echoes are still discarded using their request serial and coordinates. This keeps clicks and camera edge panning aligned with the visible cursor on GNOME/gamescope. The contributor confirmed this path in a gamescope practice-tool session; plain GNOME and NVIDIA still require manual verification.
Recovery requires every matching client to be at least 60 seconds old and a
complete Hyprland window record (`class`, `title`, `mapped`, `hidden`). A second
process scan after window inspection must find the same client identities and
no game. Missing information or shutdown failure leaves normal launch in charge.