Skip to content

fix: join removed UDP session workers on close - #59

Merged
cppla merged 1 commit into
mainfrom
codex/udp-worker-completion
Oct 3, 2026
Merged

cppla merged 1 commit into
mainfrom
codex/udp-worker-completion

Conversation

@cppla

@cppla cppla commented Oct 3, 2026

Copy link
Copy Markdown
Owner

Summary

  • Track CONNECT-UDP session workers independently of the target lookup index, so PacketConn Close also joins workers belonging to already-removed sessions.
  • Register logical packet cancellation watchers under the client's existing closed-state lock, so WebH3Client Close waits for packet shutdown as well.
  • Preserve admission release timing, target reopening, healthy UDP behavior, authentication, wire format and defaults. Synchronize architecture documentation.

Regression and local verification

  • Deterministic owned TLS 1.3/H3 regression with real authenticated request/stream reset, plus a test-only scheduling barrier before worker cancellation selection. Both packet-close and client-close cases reproduce early return against only the original production source; all fixture workers independently join. The same final test passes with this fix.
  • Go 1.25.13 focused race/shuffle count 10: seven top-level tests, 140 RUN/PASS nodes, no FAIL/SKIP/race markers. Existing healthy echo, late opening, capacity reuse, cancellation-cause isolation and physical cleanup controls included.
  • Go 1.27.1 make check and make race: passed.
  • Offline isolated Linux/arm64 Docker execution with fresh Go 1.25.13 CGO=0 binaries: four top-level tests x3, 27 RUN/PASS nodes. Driver/container/source/binary/cleanup guards passed; temporary container removed. This container run is non-race.

Scope and evidence limits

The scheduling barrier is synthetic, not a natural network failure-rate experiment. The regression uses the normal successful registration/start handoff tail after a real authenticated open, without a production hook. Second concurrent Close startup is observed, not its internal stack. Full Go gates have nonverbose package output.

No dependency or protocol/default change, remote deployment, release/tag/registry publication, real-browser comparison or corpus run. Exact-head PR and merged-main CI are independent publication gates.

Copilot AI balanced review requested due to automatic review settings October 3, 2026 06:01

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@cppla
cppla merged commit e8a65e9 into main Oct 3, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants