Clarify asynchronous cleanup ownership

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
This commit is contained in:
Loren Eteval
2026-10-10 20:34:30 +08:00
parent dfcdfd254f
commit bd02e4b4c7
7 changed files with 48 additions and 7 deletions
+4
View File
@@ -61,6 +61,10 @@ source tree's root.
new acquisition while they remain. Final controller shutdown surfaces unresolved cleanup and preserves the
next-start preference. Check these outcomes independently in `tests/test_controllers.py` and
`tests/test_runtime_lifecycle.py`.
Pending asynchronous cleanup stays `Disconnecting`, with runtime ownership in the service. Reconnect waits for
successful release; a genuine cleanup failure returns to usable UI without admitting replacement resources.
Shutdown publishes its result only after this stop operation finishes and preserves the startup preference.
`tests/test_sing_tun.py` covers delayed authorization, cancellation, reconnect and shutdown with real Qt delivery.
- System Proxy configuration is best effort. Its helper logs host failures; an explicit False return does not roll
back an otherwise usable committed runtime or prevent Connected. Preserve exception-path recovery separately.
Exercise actual helper results with mocked OS boundaries; Connected does not guarantee the OS proxy was applied.