Skip to content

v13.23.0.0

@webpatser webpatser tagged this 25 Jul 11:05
The async client and its HTTP/2 stack were fully capable, but FledgeHandler
overwrote the request's protocol versions with the PSR-7 version, which
Guzzle stamps 1.1 by default: h2 was never offered in ALPN, and an explicit
'version' => 2.0 option crashed on setProtocolVersions('2.0'). Map an
explicit HTTP/2 choice ('2' or '2.0') to h2-only negotiation and keep
everything else pinned to its literal version, so default traffic stays on
HTTP/1.1 until callers opt in per request.

Two port gaps surfaced by the new TLS loopback tests, fixed along the way:
the fire-and-forget request writer chain in Http2ConnectionProcessor left
its Future unobserved (now ->ignore(), matching the trailers future above),
and the server's DefaultErrorHandler referenced resources/error.html which
never made it into the port.

The loopback tests spin up the package's own HTTP server with a throwaway
self-signed certificate and verify h2 end to end through both the raw
client and the Guzzle bridge, plus the 1.1 default pin.
Assets 2
Loading