deps: bump quic-go to v0.59.0 (unbounded fork rebased) + pion/webrtc v4.2.11#354
Merged
Conversation
pion/webrtc v4.2.x switched its internal plumbing from pion/transport/v3 to v4. Migrate the three clientcore files that reference transport directly so the upgrade lands cleanly. Doing this now, before Unbounded has production clients, is cheap: four files across broflake, one in lantern-box. Deferring would mean more files to migrate and — because widgets don't auto-update — users on old widgets permanently stranded on pion v4.1.x. DTLS has explicit version negotiation so this change is not wire-breaking between old and new peers. This bump also picks up: - SCTP RACK (claimed 71% throughput improvement) - ICE renomination support - pion/dtls v3.1.2 with DTLS 1.3 handshake components in progress (not yet usable — pion/dtls still says "Only DTLS 1.2 is currently supported" — but a step toward future DTLS-1.3-based mitigation of the Russian filter described in net4people/bbs#603) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Our fork of quic-go has one custom patch: +50 to MaxActiveConnectionIDs and MaxIssuedConnectionIDs to support more connection migrations per QUIC session. Those values remain unexported consts in upstream's internal/protocol/params.go as of v0.59.0, so the fork is still needed. Rebased the single custom commit onto upstream v0.59.0 and tagged the result v0.59.0-unbounded in getlantern/quic-go-unbounded-fork. This commit just updates the replace directive and adapts to two breaking API changes in quic-go between v0.51 and v0.59: - quic.Connection (interface) became *quic.Conn (struct pointer) - quic.Stream (interface) became *quic.Stream (struct pointer) Also bumps common/Version to v2.3.0 since the API surface exposed to consumers (QUICStreamNetConn.Stream field type) changed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
QUICStreamNetConn.Stream field type changed (quic.Stream -> *quic.Stream); that's a public API change, so minor bump. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
38c1be9 to
578dad9
Compare
Contributor
There was a problem hiding this comment.
Pull request overview
Aligns broflake@main with the QUIC/WebRTC dependency set and source code that downstream workspaces already pin to, by rebasing the unbounded quic-go fork on upstream v0.59.0 and migrating pion transport v3 → v4.
Changes:
- Bump
github.com/getlantern/quic-go-unbounded-fork(viareplace) tov0.59.0-unboundedand update call sites for the new*quic.ConnAPI. - Bump
pion/webrtctov4.2.11and migratepion/transportimports tov4. - Update module/tooling metadata (
go 1.24.0, protocolcommon.Version→v2.3.0) and refresh sums.
Reviewed changes
Copilot reviewed 8 out of 9 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
go.mod |
Updates Go version, bumps quic-go/webrtc deps, migrates pion transport to v4. |
go.sum |
Dependency checksum refresh for the new quic-go fork + pion/webrtc cascade. |
egress/quic.go |
Updates connection types/signatures to quic-go v0.59 (*quic.Conn). |
common/version.go |
Bumps protocol/version string to v2.3.0. |
common/network.go |
Updates QUIC stream wrapper to match new quic-go stream type usage. |
clientcore/webrtc_api.go |
Switches non-wasm transport imports to pion/transport/v4. |
clientcore/webrtc_api_js.go |
Switches wasm transport import to pion/transport/v4. |
clientcore/settings.go |
Switches WebRTCOptions.Net type import to pion/transport/v4. |
clientcore/quic.go |
Updates eventual-connection plumbing to store/return *quic.Conn. |
Comments suppressed due to low confidence (1)
go.mod:3
- The
godirective was bumped to1.24.0, which raises the minimum Go toolchain required to build this module. If the intent is to pin/standardize the toolchain version (and reduce breakage for developers/CI still on older Go), consider adding atoolchain go1.24.0directive and/or explicitly confirming CI/build images have been updated to Go 1.24.
go 1.24.0
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Copilot pointed out that with connection/conn now typed as *quic.Conn, the (*record.connection).X / (*conn).X patterns are redundant — Go auto-dereferences for method calls. Cleaned up four sites: egress/quic.go:52 (*record.connection).CloseWithError egress/quic.go:95 (*record.connection).AddPath egress/quic.go:117 (*record.lastPath).Close egress/egresslib.go:172 (*conn).AcceptStream No behaviour change — purely stylistic.
Contributor
Author
|
Tested this end-to-end. Pulling in! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Brings the
fisk/quic-go-v0.59branch to main. Primary purpose: align broflake's source with the binary artifact currently pinned asv0.0.0-20260417230047-38c1be9d5596— lantern-box and lantern-cloud already consume that pseudo-version (which lives on this branch), so their builds work, but `broflake@main` has drifted to the point of being unbuildable in the downstream workspace.Commits
Why this matters
Without this on main, anyone fetching broflake@main gets v0.51-API code that's incompatible with the published broflake pseudo-version our downstream repos already use. It also creates a confusing state where `go.work`-based workspace builds break (the local checkout is effectively older than the published pin). A branch that's the actual source of the binary shipped to production needs to be on main.
Conflicts with current main
Since PR #350 (covert-dtls + observability from #353) landed while this branch sat, there are expected conflicts:
All resolvable by hand in a merge commit; the resolution is the same one already living in `fisk/pion-v4.2-covert-dtls` (pion v4 imports + keep covertdtls imports).
What this replaces
Test plan
🤖 Generated with Claude Code