Ab.Transport: EncapsulationClient drain/timeout/test follow-ups #565
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context: native .NET Allen-Bradley transport work (plan
docs/plans/2026-10-07-native-ab-transport.md, branchfeat/native-ab-transport, not yet merged). Parked as a Minor during per-task review — none of these block the plan.EncapsulationClient(Ab.Transport/Eip) follow-ups:CancellationToken.None(constraint-mandated so a half-written frame never desyncs the stream) — revisit whether a bounded write timeout is wanted.Timeoutwould let a cancelled-reply drain hold the single-flight gate forever. ConfirmConnectionOptionsvalidation rejects non-finite/non-positive timeouts everywhere a client is built.Fixed: writes awaited under the exchange timeout and fault (tear down) the client on expiry — never cancelled mid-frame; non-finite/non-positive timeouts rejected at every entry point; gate wait bounded by the call timeout; ordering race made deterministic; dispose-during-drain test; RegisterSession zero-context dependency documented + tested. Residual: no unit test for the write-timeout path itself (needs a peer that stops reading with full socket buffers; one EIP frame can't fill loopback buffers). (merge
13a67270on master, pushed 2026-10-08)