Minor findings from section 3 of the repository review, UDS part. Source: docs/reviews/2026-09-10-repository-review.md (branch claude/repository-review-hpttwc). Line numbers refer to main @ 8ed80f6.
DiagnosticSessionControlAsync(byte) masks the session type with 0x7F silently. A caller passing 0x83 gets 0x03 without being told.
SendRawAsync with the suppress-positive-response bit set waits for a response that will never come, up to the full P2 timeout.
- NRC 0x21 (busyRepeatRequest) has no retry semantics — it is surfaced as a plain failure, though the NRC exists precisely to ask for a retry.
UdsTimeoutException.Elapsed sometimes reports the budget and sometimes the measured time, depending on which path timed out.
- No functional-addressing path in the client. A functional
3E 80 has to be assembled by hand.
UdsClientImpl.Dispose disposes the semaphore after a 5 s lock timeout while a holder still owns it, turning a slow operation into an ObjectDisposedException on another thread.
Minor findings from section 3 of the repository review, UDS part. Source:
docs/reviews/2026-09-10-repository-review.md(branchclaude/repository-review-hpttwc). Line numbers refer tomain@8ed80f6.DiagnosticSessionControlAsync(byte)masks the session type with 0x7F silently. A caller passing 0x83 gets 0x03 without being told.SendRawAsyncwith the suppress-positive-response bit set waits for a response that will never come, up to the full P2 timeout.UdsTimeoutException.Elapsedsometimes reports the budget and sometimes the measured time, depending on which path timed out.3E 80has to be assembled by hand.UdsClientImpl.Disposedisposes the semaphore after a 5 s lock timeout while a holder still owns it, turning a slow operation into anObjectDisposedExceptionon another thread.