RFR: 8349910: Implement JEP 517: HTTP/3 for the HTTP Client API [v11]
Daniel Jeliński
djelinski at openjdk.org
Thu Jul 24 19:37:16 UTC 2025
On Tue, 8 Jul 2025 14:04:56 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:
>> Hi,
>>
>> Please find here a PR for the implementation of [JEP 517: HTTP/3 for the HTTP Client API](https://openjdk.org/jeps/517).
>>
>> The CSR can be viewed at [JDK-8350588: Implement JEP 517: HTTP/3 for the HTTP Client API](https://bugs.openjdk.org/browse/JDK-8350588)
>>
>> This JEP proposes to enhance the HttpClient implementation to support HTTP/3.
>> It adds a non-exposed / non-exported internal implementation of the QUIC protocol based on DatagramChannel and the SunJSSE SSLContext provider.
>
> Daniel Fuchs has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 550 commits:
>
> - merge latest changes from master branch
> - http3: fix new HttpHeadersBuilder constructor
> - qpack - optimize processing of decoder instruction exceptions
> - http3/quic: update the code to use the newly introduced jdk.internal.net.http.Origin
> - Avoid speculating about the future in TODOs
> - http3: rename PacketSpaceManager::isAcknowledging to PacketSpaceManager::trackAcknowledgement
> - merge latest changes from master branch
> - http3: fix typo in UniStreamPair.java
> - WriterQueue may leak before the constructor completes
> - Limit the number of retries in H3UserInfoTest
> - ... and 540 more: https://git.openjdk.org/jdk/compare/7b255b8a...f0a4fd3d
test/jdk/java/net/httpclient/http3/H3StreamLimitReachedTest.java line 94:
> 92: import static org.testng.Assert.assertFalse;
> 93:
> 94: public class H3StreamLimitReachedTest implements HttpServerAdapters {
This test seems to duplicate the checks in `StreamLimitTest`.
test/jdk/java/net/httpclient/http3/H3UnsupportedSSLParametersTest.java line 42:
> 40: * @run junit H3UnsupportedSSLParametersTest
> 41: */
> 42: public class H3UnsupportedSSLParametersTest {
This test overlaps with H3QuicTLSConnection. Any reason we shouldn't merge them?
test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/common/ThrowingConsumer.java line 26:
> 24:
> 25: @FunctionalInterface
> 26: public interface ThrowingConsumer<T, X extends Throwable> {
This interface is only implemented by Http2Handler. We should remove it.
test/jdk/java/net/httpclient/lib/jdk/httpclient/test/lib/http2/Http2RedirectHandler.java line 61:
> 59: }
> 60:
> 61: protected byte[] getResponseBytes() {
this method doesn't appear to be overridden anywhere. Should we revert these changes?
test/jdk/jdk/internal/net/http/quic/packets/QuicPacketNumbersTest.java line 33:
> 31: * @modules java.net.http/jdk.internal.net.http.quic.packets
> 32: */
> 33: public class QuicPacketNumbersTest {
This test covers the same functions as `quic/PacketNumbersTest.java`; can we remove one?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24751#discussion_r2228940118
PR Review Comment: https://git.openjdk.org/jdk/pull/24751#discussion_r2228863718
PR Review Comment: https://git.openjdk.org/jdk/pull/24751#discussion_r2229069373
PR Review Comment: https://git.openjdk.org/jdk/pull/24751#discussion_r2229083738
PR Review Comment: https://git.openjdk.org/jdk/pull/24751#discussion_r2229397818
More information about the core-libs-dev
mailing list