HttpProxy and Http2Client (719 LOC) shipped a reverse-proxy adapter and outbound HTTP/2 client from flash core with zero callers anywhere in the server itself — only each other and their own tests. An HTTP/1.1+2 server framework has no business bundling an outbound client; that capability belongs in its own flash-extensions/flash-ext-* module if/when it's needed. Removed, along with the now-dead src/bench load driver that depended on Http2Client (no replacement client written here — flagged as follow-up work, not silently dropped). docs/http2/ had accumulated core, cross-protocol documentation alongside genuine HTTP/2-protocol internals: HTTP1-HARDENING, TRANSPORT, MESSAGE-MODEL, TRAILERS-AND-STREAMING and BYTES all describe machinery HTTP/1.1 and HTTP/2 share, not HTTP/2 specifically. Moved to a new docs/core/, leaving docs/http2/ to the protocol layers, wire internals and operational docs that are actually HTTP/2-specific. CLEARTEXT-AND-PROXY.md renamed to CLEARTEXT.md and its now-removed upstream-client section cut, matching the source removal above. README.md: removed the "HTTP/2 upstream proxy" section (documented the deleted HttpProxy/Http2Client), the flash-bench module row and build command (not a module that exists in this repo), and fixed every doc link to the new docs/core/ paths. Added the new FlashConfiguration.maxConnections field to the configuration reference. src/bench/ (a load-test harness distinct from the JMH suite, not wired into any Maven profile or CI) is committed here for the first time.
30 lines
1.5 KiB
Markdown
30 lines
1.5 KiB
Markdown
# HTTP/2 cleartext
|
|
|
|
TLS HTTP/2 and cleartext HTTP/2 have independent rollout controls:
|
|
|
|
- `http2Enabled` advertises `h2` through TLS ALPN.
|
|
- `http2CleartextEnabled` accepts the HTTP/2 prior-knowledge preface on plaintext listeners.
|
|
|
|
Both default to `false`. Cleartext support follows RFC 9113 prior knowledge. The obsolete
|
|
HTTP/1.1 `Upgrade: h2c` transition is intentionally unsupported.
|
|
|
|
## Header conversion
|
|
|
|
`HopByHopHeaders` is the single policy used at connection boundaries. It removes fields named by
|
|
`Connection`, the standard hop-by-hop set, HTTP/2-forbidden fields and pseudo-fields. `TE` is
|
|
forwarded only as `trailers` when the target is HTTP/2. Tests execute the same policy for all four
|
|
HTTP/1.1 and HTTP/2 source/target combinations.
|
|
|
|
## Authority and 421
|
|
|
|
On TLS HTTP/2 connections, Flash checks `:authority` against the selected certificate's DNS/IP
|
|
subject alternative names. An authority outside that served set receives `421 Misdirected
|
|
Request`, allowing a coalescing client to retry on a different connection. Exact names and
|
|
single-label wildcards are supported; h2c has no certificate identity and is unaffected.
|
|
|
|
An outbound HTTP/2 client and reverse-proxy adapter (`Http2Client`, `HttpProxy`) were built
|
|
against this cleartext support but had no caller anywhere in `flash` core — an HTTP/1.1+2 server
|
|
framework has no business shipping an outbound client. That code has been removed; if a
|
|
reverse-proxy capability is needed later, it belongs in its own `flash-extensions/flash-ext-*`
|
|
module, not in core.
|