Windows Named Pipe: verify DACL denies other users, and measure read-path perf for MCP workloads
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 38/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Ambito
- networking, performance, testing
Direzione di ricerca
Start with docs/BENCHMARK_GUIDE.md, hyper/net/NamedPipe.windows.cpp, and the NamedPipeClient::poll_read path. On a Windows host, inspect the live pipe ACL and test access from a second user, then run release-build TCP versus Named Pipe MCP-shaped benchmarks with the pinned 0.0.26479 engine. Done means the ACL denial is recorded and benchmark median/p95 results determine whether read-side tuning is warranted.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Purpose
Track the Windows-specific verification and tuning that the daemon's move to Named Pipe transport (PR A / feat/daemon-engine-ipc) needs but that cannot be done from a macOS/Linux developer machine or from CI. Recorded now because the functional switch lands without a Windows host, but two follow-ups genuinely require one.
What is already handled (no Windows host needed)
- Access control is automatic.
hyperdcreates the pipe with an owner-only DACL by default:hyper/net/NamedPipe.windows.cpp:170-176branches on thenamed_pipes_allow_all_userssetting (defaults tofalse), and in that branch builds the SDDLD:P(A;OICI;FRFW;;;<current-user-SID>)at:143. Every instance is re-secured viaclone()→createNamedPipeHelper, andPIPE_REJECT_REMOTE_CLIENTSis set. No client-side ACL code is required; the only obligation is never to set that opt-out setting. - The Rust client is implemented —
AsyncStream::NamedPipe(NamedPipeClient),SyncStream::NamedPipe(File), anddetect_transport_typeroutingtab.pipe://and\\. - CI exercises it on
test (windows-latest)andclippy (windows-latest), so the transport switch is compiled and functionally tested on real Windows before merge.
What needs a real Windows session
1. Confirm the DACL actually denies a second user
CI runs as a single account, so a green Windows test proves the pipe works, not that another local account is refused. Verify on a Windows box:
- Inspect the live pipe's DACL with
Get-Aclor Sysinternalsaccesschkon\\.\pipe\hyper-<pid>and confirm it matches the predicted owner-only SDDL. - From a second user context, attempt to connect and confirm it is denied.
This is verification that the source-level fact holds at runtime — not a code change.
2. Measure and, if needed, tune the Named Pipe read regression
docs/BENCHMARK_GUIDE.md records a measured Windows regression for Named Pipes versus TCP: query.full_scan async −76%, sync −29%, attributed to tokio's NamedPipeClient::poll_read delivering less data per completion-port wake-up. That was measured on 100M-row full scans.
Unknown: whether that regression affects MCP-shaped workloads — connection setup, small query round-trips, moderate result fetches — or only bulk scans. The macOS UDS A/B (recorded in the same guide) showed IPC winning latency and losing only on bulk streaming, saturating around +62%; the Windows read path may behave differently because the mechanism (completion-port wake-ups) is different.
Steps, on Windows:
- Micro-benchmark TCP vs Named Pipe for MCP-shaped workloads (mirror the macOS methodology: release build, 20+ iterations, median and p95).
- If the regression is material for those workloads, investigate read-side tuning — read buffer sizing and the
poll_readstrategy forNamedPipeClient. - Note the pinned engine caveat: the macOS IPC figures were taken on an unversioned local
hyperd, so any comparison should use the pinned0.0.26479engine.
Not blocking
PR A (daemon engine over IPC) can land on its CI evidence. These are follow-ups, not merge gates. Absolute performance is not an MCP requirement, so a modest Windows read regression is acceptable — this issue exists to quantify it and decide whether tuning is warranted, not to hold the transport change.
Provenance
Identified during the IPC transport evaluation and the PR #295 review; both workers were on macOS and explicitly could not verify Windows behaviour (cross-compilation for Windows fails locally on ring's C build). Verified against main after #295/#298/#289 landed.
- Lingua principale
- Rust
- Stelle
- 2
- Fork
- 2
- Merge medio
- 12h 2m
- PR unite (30g)
- 60
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di tableau/hyper-api-rust
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
tableau/hyper-api-rust#294 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
tableau/hyper-api-rust#311 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
tableau/hyper-api-rust#305 ·
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 72/100
tableau/hyper-api-rust#300 ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
tableau/hyper-api-rust#299 ·
Tutte le issue di tableau/hyper-api-rust
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
Axis areas are always keyboard-focusable (Sense::drag), even with allow_axis_zoom_drag(false) Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
bug team:backend track:services-maintenance
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
cowprotocol/services#4950 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
gitbutlerapp/gitbutler#15998 · 1 commento ·