| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| README.md | 2026-09-08 | 3.4 kB | |
| Release 5.09.982 source code.tar.gz | 2026-09-08 | 406.2 kB | |
| Release 5.09.982 source code.zip | 2026-09-08 | 464.4 kB | |
| Totals: 3 Items | 873.9 kB | 2 | |
Release 5.09.982
Comprehensive release with wireProtocol v2, modern TOML configuration, OIDC authentication, wire encryption & compression, mature QUIC transport, and 32-bit architecture compilation fixes.
🐛 32-bit Build Fix (v5.09.982)
- Fix
wire_v2.c: castplentouint64_tbefore 64-bit shifts (>> 56,>> 48, etc.) intranscript_partto fix-Werror=shift-count-overflowon 32-bit architectures (mips, arm, powerpc, i386). - Fix
msg.c: casttime_ttointmax_tfor%jdformat string inget_auth_key().
🚀 Key Highlights & New Features
1. FRP transport.wireProtocol = "v2" Support
- Added negotiation for
FRP\x00\x02protocol magic and JSON ClientHello/ServerHello. - Implemented binary message frames and AES-256-GCM AEAD encryption on the control channel after login (compatible with frps >= 0.69). Default remains v1.
2. FRP-Compatible Modern TOML Configuration
- Full support for modern frp TOML configuration format via integrated
tomlc17. - Dynamic parsing for client, visitor, server, and multi-proxy definitions.
3. OIDC Authentication
- Support for
auth.method = "oidc"with OAuth2client_credentialsgrant flow.
4. Wire-Level Encryption & Compression
- AES-128-CFB encryption (
transport.useEncryption) with PBKDF2 salt matching frps. - Snappy compression (
transport.useCompression) via vendored snappy-c. - Proxy HTTP custom headers (
requestHeaders/responseHeaders) and time-based access control (startTime/endTime).
5. Mature QUIC Transport & Full Scenario Support
- Complete ngtcp2 ↔ quic-go interop support for UDP-based low-latency transport.
- Work stream data relay handling large payloads (> 1 QUIC packet).
- All 4 transport scenarios pass end-to-end: Plain TCP, TCP+mux (yamux), QUIC, and TLS.
🔧 Fixes & Security Hardening
- Crypto & Lifecycle P1s:
- Main encoder generates fresh random IV on each handshake, preventing CFB key+IV reuse.
- OIDC and QUIC transport enforce TLS host verification and CA trust store fallback.
- Client clears
ctl_bevupon worker EOF to avoid writing to freed bufferevent. - TCP proxy stashes unconsumed encrypted mux data in
enc_pendingrather than double-encrypting into the raw buffer. - Control channel drains
evbuffer_writecompletely to ensure server-side keystream synchronisation. -
Decrypt mux work streams with AES-128-CFB and restore UDP proxy framing (
TypeUDPPacket). -
Remote Crash & Command Injection P0s:
- Added strict bounds checking on
msg->lengthagainst received buffer length across control handlers. - Bounded string array parsing and clamped candidate/assisted addresses in xtcp.
-
Replaced unsafe
strcpycalls with length-bounded copies and sanitized shell arguments beforepopen()in plugin handlers (instaloader,youtubedl). -
Build & Platform Compatibility:
- OpenWrt wolfSSL/OpenSSL dual-backend build fix via
ssl_compat.hwrapper so OpenWrt can use wolfSSL for cryptography alongside OpenSSL forbufferevent_openssl. - Renamed enum
DATAtoTMUX_DATAintcpmux.hto resolve namespace conflict with wolfSSL headers.
📦 Changes & Removals
- Deprecated and removed legacy
iodandftpproxy types.
Full Changelog: https://github.com/liudf0716/xfrpc/compare/5.06.909...5.09.981