Skip to content

Join stalled TCP destinations on native relay shutdown - #56

Merged
cppla merged 2 commits into
mainfrom
codex/tls-relay-shutdown
Oct 3, 2026
Merged

cppla merged 2 commits into
mainfrom
codex/tls-relay-shutdown

Conversation

@cppla

@cppla cppla commented Oct 3, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Close native QUIC/TLS TCP destinations when the physical connection or server owner ends, including idle reads after an upload FIN.
  • Stop or join the owner callback before releasing stream admission; preserve ordinary bidirectional half-close.
  • Use the physical QUIC connection context rather than its send-side stream context; keep dialing cancellation independent.
  • Stabilize one existing trailer fixture with a test-only bounded retry for typed UDP ephemeral-port collisions. Fixed addresses, other errors, and joined rollback failures remain fail-fast; production ListenWeb is unchanged.

Validation and retained failures

  • Frozen real TCP/TLS1.3/QUIC fixture: original implementation failed all 8 shutdown cases and both Close callback cases; all 4 healthy half-close controls passed. Independent target cleanup joined every worker.
  • Negative mutations rejected: send-side-context owner loses post-FIN upload; omitted callback join releases admission early; disabled ephemeral setup retry fails with a real occupied UDP endpoint after directly proving TCP rollback. Correct hashes restored afterward.
  • Latest combined selection: 8 top tests, 63 runtime nodes, race x10 each on Go 1.25.13 and 1.27.1 with exact 630 RUN/PASS entries per log. Full make check and make race passed again.
  • Latest-source Linux/arm64 isolated Docker x3 passed: all 8 top tests / 63 runtime nodes, exact 189 RUN/PASS entries, 0 FAIL/SKIP (CGO=0, non-race). Fresh binary and all source/input/compiler/driver guards matched; dedicated container was removed. Earlier owner-only run and an initial corrected host-driver awk preflight error are retained separately.
  • First PR head 064875d CI run 37096137959 failed Go 1.25 job 111126350337: existing trailer public_origin setup's TCP-selected port was already occupied in UDP. Original failure retained; no rerun or merge of that head. Test-only correction is a new commit with fresh CI.

No authentication, protocol, dependency, default timeout or UDP production changes. No release/tag/image publication or remote SSH testing. Latest public CI and post-merge main are independent gates.

Copilot AI balanced review requested due to automatic review settings October 3, 2026 04:19

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 d4d57f2 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