Skip to content

fix(tunnel): preserve full HTTP/2 session reuse across Go versions - #63

Merged
cppla merged 1 commit into
mainfrom
codex/h2-queue-compatibility
Oct 3, 2026
Merged

cppla merged 1 commit into
mainfrom
codex/h2-queue-compatibility

Conversation

@cppla

@cppla cppla commented Oct 3, 2026

Copy link
Copy Markdown
Owner

Summary

  • Preserve an authenticated HTTP/2 connection when its stream limit is temporarily full, across the legacy and Go 1.27 native transports.
  • Treat native state only as a conservative queue hint. An authoritative pre-HEADERS rejection can reselect once within the original caller deadline; encoded requests, bootstrap authentication and canceled requests are never replayed.
  • Keep transport inspection outside the session-owner lock, preserve accepted sibling streams when retiring a draining connection, and document these ownership rules.

This follows the first-attempt main CI failure after #62. A frozen real-TLS/MAX_CONCURRENT_STREAMS=1 control reproduces the old-source session replacement on Go 1.27 and passes on Go 1.25. The original failed CI and local diagnostic remain retained separately.

Validation

  • make check and make race: passed.
  • Seven focused top-level regressions, race/count20, on Go 1.25.13, Go 1.27.1 and Go 1.27.1 with http2legacy: all passed.
  • The unchanged previously failing H2 leaf, original seed, coverage/count100: 100/100 passed.
  • Fresh isolated Linux/arm64 Docker execution, seven focused tops/count3: all passed.
  • Four new controlled regressions cover queued cancellation, capacity release, ordered GOAWAY, and a protocol reset after encoded HEADERS with no automatic replay.

No dependency, wire protocol, default configuration, workflow, version or release change. These checks establish the tested lifecycle behavior, not browser equivalence or performance claims.

Copilot AI balanced review requested due to automatic review settings October 3, 2026 08:29

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