Skip to content

chore: log that HTTP/3 is not used through proxies - #1580

Merged
jlouvel merged 1 commit into
feat/netty-socks-proxyfrom
chore/netty-http3-proxy-notice
Nov 1, 2026
Merged

jlouvel merged 1 commit into
feat/netty-socks-proxyfrom
chore/netty-http3-proxy-notice

Conversation

@jlouvel

@jlouvel jlouvel commented Oct 30, 2026

Copy link
Copy Markdown
Collaborator

Refs #1572 (doesn't close it). Based on #1579.

In the HTTP3 transport mode, HTTPS requests that go through an HTTP or SOCKS proxy fall back to HTTP/1.1 over TCP. Proxying QUIC needs CONNECT-UDP (RFC 9298, MASQUE), which Netty doesn't support yet. This PR only makes the fallback visible. #1572 stays open to track real support.

Changes

  • NettyClientHelper.start(): when the HTTP3 mode is combined with an HTTPS or SOCKS proxy, one INFO message says that HTTP/3 is not used through proxies. It is logged once at startup instead of per request.
  • httpClientTransportMode Javadoc: "without HTTP or SOCKS proxy".

No changes.md entry for a log line. There's no test either: starting the HTTP3 mode needs the native QUIC library.

Validation

./mvnw -B -pl org.restlet -P default,test verify at the top of the stack (this branch, including #1574 to #1579): 2,228 tests passed, 0 failures. JaCoCo checks are met, and SpotBugs reports 8 findings, under the threshold of 9.

🤖 Generated with Claude Code

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

No active review issues are reported for the change documenting and logging the existing HTTP/3 proxy fallback.

No open issues 🎉

What changed in this PR

Makes the Netty client's existing HTTP/3 proxy fallback visible without changing transport behavior or adding HTTP/3 proxy support.

Changes:

  • Logs an INFO message once at startup when HTTP3 mode is configured with an HTTPS or SOCKS proxy, explaining the HTTP/1.1-over-TCP fallback.
  • Clarifies in the transport-mode Javadoc that HTTP/3 applies to HTTPS requests without an HTTP or SOCKS proxy.
File Description
org.restlet/​src/​main/​java/​org/​restlet/​engine/​netty/​NettyClientHelper.java Adds the startup fallback message and clarifies the HTTP/3 proxy limitation in Javadoc.

Review effort: Balanced

@jlouvel
jlouvel force-pushed the chore/netty-http3-proxy-notice branch from 63671c2 to 5654564 Compare October 31, 2026 06:07
@jlouvel
jlouvel force-pushed the chore/netty-http3-proxy-notice branch from 5654564 to 0cb3622 Compare October 31, 2026 07:44
@jlouvel
jlouvel force-pushed the chore/netty-http3-proxy-notice branch from 0cb3622 to a2123d5 Compare November 1, 2026 14:56
@jlouvel
jlouvel force-pushed the chore/netty-http3-proxy-notice branch from a2123d5 to 5f27d0e Compare November 1, 2026 16:18
@jlouvel
jlouvel added this pull request to stack #1626 November 1, 2026 20:12
@jlouvel
jlouvel force-pushed the chore/netty-http3-proxy-notice branch from 5f27d0e to 6f11631 Compare November 1, 2026 20:21
@jlouvel
jlouvel force-pushed the chore/netty-http3-proxy-notice branch from 6f11631 to c5265d7 Compare November 1, 2026 21:24
In the HTTP3 transport mode, the Netty client sends the HTTPS requests
going through an HTTP or SOCKS proxy over TCP, since proxying QUIC
requires CONNECT-UDP (RFC 9298), which Netty doesn't support yet. Log it
at startup so that the fallback is visible, and mention SOCKS proxies in
the httpClientTransportMode Javadoc.

Refs #1572.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Signed-off-by: Jerome Louvel <[email protected]>
@jlouvel
jlouvel force-pushed the chore/netty-http3-proxy-notice branch from c5265d7 to 7046ee7 Compare November 1, 2026 21:24
@sonarqubecloud

sonarqubecloud Bot commented Nov 1, 2026

Copy link
Copy Markdown

❌ The last analysis has failed.

See analysis details on SonarQube Cloud

@jlouvel
jlouvel merged commit 5eb4469 into 3.0 Nov 1, 2026
3 checks passed
@jlouvel
jlouvel deleted the chore/netty-http3-proxy-notice branch November 1, 2026 21:26
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