[PR #4861] [CLOSED] feat: update quic-go dependency from v0.48.2 to v0.53.0 #5062

Closed
opened 2026-05-05 14:53:57 -06:00 by gitea-mirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/fatedier/frp/pull/4861
Author: @fatedier
Created: 7/1/2025
Status: Closed

Base: devHead: devin/1751363235-update-quic-go


📝 Commits (10+)

📊 Changes

55 files changed (+940 additions, -485 deletions)

View changed files

📝 .github/workflows/golangci-lint.yml (+2 -8)
📝 .github/workflows/stale.yml (+1 -1)
📝 .golangci.yml (+92 -120)
📝 Makefile.cross-compiles (+1 -1)
📝 README.md (+2 -4)
📝 Release.md (+3 -7)
📝 client/admin_api.go (+6 -6)
📝 client/connector.go (+1 -1)
📝 client/control.go (+1 -1)
📝 client/proxy/proxy.go (+4 -20)
📝 client/proxy/sudp.go (+1 -1)
📝 client/proxy/udp.go (+3 -1)
📝 client/service.go (+4 -5)
📝 client/visitor/xtcp.go (+1 -1)
📝 doc/server_plugin.md (+1 -1)
📝 doc/virtual_net.md (+1 -3)
📝 go.mod (+9 -10)
📝 go.sum (+20 -18)
📝 hack/run-e2e.sh (+3 -3)
📝 package.sh (+1 -1)

...and 35 more files

📄 Description

feat: update quic-go dependency from v0.48.2 to v0.53.0

Summary

This PR addresses issue #4852 by updating the quic-go dependency from v0.48.2 to v0.53.0 to resolve build compatibility issues. The quic-go v0.53.0 release introduced breaking API changes where:

  • quic.Connection interface was replaced with *quic.Conn struct
  • quic.Stream interface was replaced with *quic.Stream struct

All affected code has been updated to use the new API throughout the codebase, including client connections, server handling, and P2P (XTCP) functionality.

Review & Testing Checklist for Human

⚠️ HIGH RISK - Core networking dependency change with breaking API changes

  • End-to-end QUIC connectivity: Test frpc connecting to frps using QUIC transport protocol
  • P2P functionality: Test XTCP proxies that use QUIC for P2P connections (most critical path)
  • Error handling: Verify connection failures, timeouts, and cleanup work correctly
  • Performance testing: Check for any performance regressions or stability issues under load
  • Cross-platform testing: Verify changes work on different platforms (the original issue was on mac/arm64)

Recommended test plan: Set up a test environment with frps and frpc using QUIC transport, create XTCP proxies, and verify both basic connectivity and edge cases like connection drops.


Diagram

%%{ init : { "theme" : "default" }}%%
flowchart TD
    subgraph "Client Side"
        frpc["frpc"]
        connector["client/connector.go"]:::major-edit
        visitor["client/visitor/xtcp.go"]:::major-edit
        proxy["client/proxy/xtcp.go"]:::context
    end
    
    subgraph "Server Side"
        frps["frps"]
        service["server/service.go"]:::major-edit
    end
    
    subgraph "Core Utilities"
        conn_util["pkg/util/net/conn.go"]:::major-edit
        go_mod["go.mod"]:::minor-edit
    end
    
    subgraph "QUIC Library"
        quic_lib["github.com/quic-go/quic-go<br/>v0.48.2 → v0.53.0"]:::minor-edit
    end
    
    frpc --> connector
    frpc --> visitor
    frpc --> proxy
    frps --> service
    
    connector --> conn_util
    visitor --> conn_util
    proxy --> conn_util
    service --> conn_util
    
    conn_util --> quic_lib
    go_mod --> quic_lib
    
    connector -.->|"QUIC Connection"| service
    visitor -.->|"P2P QUIC"| proxy
    
    subgraph Legend
        L1["Major Edit"]:::major-edit
        L2["Minor Edit"]:::minor-edit
        L3["Context/No Edit"]:::context
    end
    
    classDef major-edit fill:#90EE90
    classDef minor-edit fill:#87CEEB
    classDef context fill:#FFFFFF

Notes

  • Root cause: Users building projects that depend on frp v0.63.0 encountered build errors because frp was pinned to quic-go v0.48.2 while other dependencies required v0.53.0
  • API changes: The migration from interfaces to structs in quic-go v0.53.0 required updating all type signatures and struct field types
  • Testing: Unit tests pass, but end-to-end QUIC functionality testing is strongly recommended
  • Session info: Requested by @fatedier, implemented in Devin session: https://app.devin.ai/sessions/c13a77e6b2734472afbeca0459db0b76

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/fatedier/frp/pull/4861 **Author:** [@fatedier](https://github.com/fatedier) **Created:** 7/1/2025 **Status:** ❌ Closed **Base:** `dev` ← **Head:** `devin/1751363235-update-quic-go` --- ### 📝 Commits (10+) - [`a23455a`](https://github.com/fatedier/frp/commit/a23455a73799670d31f7bfaeebf12ccd793a1391) update feature gates doc (#4755) - [`e687aef`](https://github.com/fatedier/frp/commit/e687aef37e18eb5e2d5012982d216990752d3f66) vnet: fix issues (#4771) - [`75edea3`](https://github.com/fatedier/frp/commit/75edea33707f1c3be91b4593e3cc55ab878d58d8) update release notes (#4772) - [`6cbb262`](https://github.com/fatedier/frp/commit/6cbb26283c3931766216968975c06e03a58a0941) build: add x64 openbsd (#4780) - [`3be6efd`](https://github.com/fatedier/frp/commit/3be6efdd285da5569a100fa1362725b1a01cd545) fix: type error in server_plugin doc (#4799) - [`3128350`](https://github.com/fatedier/frp/commit/3128350dd6f52761f635311b9aa4ce6f84f04659) feat: support YAML merge in strict configuration mode (#4809) - [`ce366ee`](https://github.com/fatedier/frp/commit/ce366ee17f3a92f6015d57083f053256dd9501a5) add proxy protocol support for UDP proxies (#4810) - [`1ced733`](https://github.com/fatedier/frp/commit/1ced733340ae5c448e29bbe5a112247641e6621a) update test package (#4814) - [`de690a5`](https://github.com/fatedier/frp/commit/de690a55c81a222003564a569e6e2d943c859445) update golangci-lint version (#4817) - [`9ccb55c`](https://github.com/fatedier/frp/commit/9ccb55c863da6efcca4fa5b7ae00dd4f69d3b17f) feat: update quic-go dependency from v0.48.2 to v0.53.0 ### 📊 Changes **55 files changed** (+940 additions, -485 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/golangci-lint.yml` (+2 -8) 📝 `.github/workflows/stale.yml` (+1 -1) 📝 `.golangci.yml` (+92 -120) 📝 `Makefile.cross-compiles` (+1 -1) 📝 `README.md` (+2 -4) 📝 `Release.md` (+3 -7) 📝 `client/admin_api.go` (+6 -6) 📝 `client/connector.go` (+1 -1) 📝 `client/control.go` (+1 -1) 📝 `client/proxy/proxy.go` (+4 -20) 📝 `client/proxy/sudp.go` (+1 -1) 📝 `client/proxy/udp.go` (+3 -1) 📝 `client/service.go` (+4 -5) 📝 `client/visitor/xtcp.go` (+1 -1) 📝 `doc/server_plugin.md` (+1 -1) 📝 `doc/virtual_net.md` (+1 -3) 📝 `go.mod` (+9 -10) 📝 `go.sum` (+20 -18) 📝 `hack/run-e2e.sh` (+3 -3) 📝 `package.sh` (+1 -1) _...and 35 more files_ </details> ### 📄 Description # feat: update quic-go dependency from v0.48.2 to v0.53.0 ## Summary This PR addresses issue #4852 by updating the quic-go dependency from v0.48.2 to v0.53.0 to resolve build compatibility issues. The quic-go v0.53.0 release introduced breaking API changes where: - `quic.Connection` interface was replaced with `*quic.Conn` struct - `quic.Stream` interface was replaced with `*quic.Stream` struct All affected code has been updated to use the new API throughout the codebase, including client connections, server handling, and P2P (XTCP) functionality. ## Review & Testing Checklist for Human **⚠️ HIGH RISK - Core networking dependency change with breaking API changes** - [ ] **End-to-end QUIC connectivity**: Test frpc connecting to frps using QUIC transport protocol - [ ] **P2P functionality**: Test XTCP proxies that use QUIC for P2P connections (most critical path) - [ ] **Error handling**: Verify connection failures, timeouts, and cleanup work correctly - [ ] **Performance testing**: Check for any performance regressions or stability issues under load - [ ] **Cross-platform testing**: Verify changes work on different platforms (the original issue was on mac/arm64) **Recommended test plan**: Set up a test environment with frps and frpc using QUIC transport, create XTCP proxies, and verify both basic connectivity and edge cases like connection drops. --- ### Diagram ```mermaid %%{ init : { "theme" : "default" }}%% flowchart TD subgraph "Client Side" frpc["frpc"] connector["client/connector.go"]:::major-edit visitor["client/visitor/xtcp.go"]:::major-edit proxy["client/proxy/xtcp.go"]:::context end subgraph "Server Side" frps["frps"] service["server/service.go"]:::major-edit end subgraph "Core Utilities" conn_util["pkg/util/net/conn.go"]:::major-edit go_mod["go.mod"]:::minor-edit end subgraph "QUIC Library" quic_lib["github.com/quic-go/quic-go<br/>v0.48.2 → v0.53.0"]:::minor-edit end frpc --> connector frpc --> visitor frpc --> proxy frps --> service connector --> conn_util visitor --> conn_util proxy --> conn_util service --> conn_util conn_util --> quic_lib go_mod --> quic_lib connector -.->|"QUIC Connection"| service visitor -.->|"P2P QUIC"| proxy subgraph Legend L1["Major Edit"]:::major-edit L2["Minor Edit"]:::minor-edit L3["Context/No Edit"]:::context end classDef major-edit fill:#90EE90 classDef minor-edit fill:#87CEEB classDef context fill:#FFFFFF ``` ### Notes - **Root cause**: Users building projects that depend on frp v0.63.0 encountered build errors because frp was pinned to quic-go v0.48.2 while other dependencies required v0.53.0 - **API changes**: The migration from interfaces to structs in quic-go v0.53.0 required updating all type signatures and struct field types - **Testing**: Unit tests pass, but end-to-end QUIC functionality testing is strongly recommended - **Session info**: Requested by @fatedier, implemented in Devin session: https://app.devin.ai/sessions/c13a77e6b2734472afbeca0459db0b76 --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
gitea-mirror 2026-05-05 14:53:57 -06:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/frp#5062
No description provided.