@push.rocks/smartproxy 27.16.2 → 27.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/changelog.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026-06-12 - 27.17.0
4
+
5
+ ### Features
6
+
7
+ - WebSocket over HTTP/3 per RFC 9220, front and backend side (rustproxy-http)
8
+ - The h3 listener now advertises SETTINGS_ENABLE_CONNECT_PROTOCOL and accepts Extended CONNECT WebSocket bootstraps, bridging them through the shared route/security pipeline.
9
+ - Backends are reached via Extended CONNECT multiplexed onto pooled QUIC connections when backendProtocol is http3 (hard-fail), or automatically under auto once Alt-Svc discovery has cached h3 for the upstream (with h1 fallback and cache invalidation).
10
+ - All front × backend combinations work; an h1 front meeting an h3 backend receives a synthesized 101 with a derived Sec-WebSocket-Accept, since RFC 9220 has no key/accept exchange.
11
+ - The tunnel byte pump, inactivity watchdog, lifetime cap, metrics, and connection accounting are now shared by every WebSocket protocol combination.
12
+ - h3/h3-quinn are pinned to the upstream commit introducing ext::Protocol::WEBSOCKET (crates.io 0.0.8 rejects ":protocol: websocket" at header parse); drop the patch when h3 releases past 0.0.8.
13
+
14
+ ### Fixes
15
+
16
+ - align the unknown-SNI passthrough test with the 27.16.2 alert behavior (tests)
17
+ - The test still asserted the pre-27.16.2 silent drop; it now validates the fatal unrecognized_name alert bytes.
18
+
3
19
  ## 2026-06-11 - 27.16.2
4
20
 
5
21
  ### Fixes
Binary file
Binary file
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartproxy',
6
- version: '27.16.2',
6
+ version: '27.17.0',
7
7
  description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFNBQVM7SUFDbEIsV0FBVyxFQUFFLHFQQUFxUDtDQUNuUSxDQUFBIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/smartproxy",
3
- "version": "27.16.2",
3
+ "version": "27.17.0",
4
4
  "private": false,
5
5
  "description": "A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.",
6
6
  "main": "dist_ts/index.js",
package/readme.md CHANGED
@@ -413,7 +413,14 @@ const route: IRouteConfig = {
413
413
  | `'http2'` | Always HTTP/2 (hard-fail if unsupported) |
414
414
  | `'http3'` | Always HTTP/3 via QUIC (hard-fail if unsupported) |
415
415
 
416
- > **Note:** WebSocket upgrades always use HTTP/1.1 to the backend regardless of `backendProtocol`, since there's no performance benefit from H2/H3 Extended CONNECT for tunneled connections, and backend support is rare.
416
+ ### 🧦 WebSockets on Every Protocol (RFC 6455 / RFC 8441 / RFC 9220)
417
+
418
+ WebSockets work across all front/backend protocol combinations:
419
+
420
+ - **Fronts:** HTTP/1.1 `Upgrade`, HTTP/2 Extended CONNECT (RFC 8441), and HTTP/3 Extended CONNECT (RFC 9220). HTTP/3-enabled routes advertise `SETTINGS_ENABLE_CONNECT_PROTOCOL`, so h3 clients can bootstrap WebSockets directly over QUIC.
421
+ - **Backends:** HTTP/1.1 `Upgrade` by default. With `backendProtocol: 'http3'` — or `'auto'` once Alt-Svc discovery has established the upstream speaks h3 — WebSocket tunnels ride an RFC 9220 Extended CONNECT stream multiplexed onto the pooled QUIC connection (no extra TCP connection per socket). `'auto'` falls back to HTTP/1.1 if the h3 attempt fails; `'http2'` backends use HTTP/1.1 for WebSockets.
422
+
423
+ The proxy translates handshakes between generations transparently — e.g. an HTTP/1.1 client meeting an h3 backend still receives a correct `101` with a derived `Sec-WebSocket-Accept`, since Extended CONNECT has no key/accept exchange.
417
424
 
418
425
  ### 🔁 Dual-Stack TCP + UDP Route
419
426
 
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartproxy',
6
- version: '27.16.2',
6
+ version: '27.17.0',
7
7
  description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
8
8
  }