RFR: 8349910: Implement HTTP/3 for the HTTP Client API
Chen Liang
liach at openjdk.org
Fri Apr 18 19:03:51 UTC 2025
On Fri, 18 Apr 2025 13:05:24 GMT, Daniel Fuchs <dfuchs at openjdk.org> wrote:
> Hi,
>
> Please find here a PR for the implementation of JEP [JDK-8291976: HTTP/3 for the HTTP Client API](https://bugs.openjdk.org/browse/JDK-8291976).
>
> The CSR can be viewed at [JDK-8350588: Implement 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.
src/java.net.http/share/classes/java/net/http/HttpRequest.java line 357:
> 355: * @since TBD
> 356: */
> 357: public default <T> Builder setOption(HttpRequestOption<T> option, T value) { return this; }
Bikeshed: we usually omit the set prefix for builders.
src/java.net.http/share/classes/java/net/http/HttpResponse.java line 838:
> 836: /**
> 837: * Represents a HTTP/3 PushID. PushIds can be shared across
> 838: * multiple client initiated requests on the same HTTP/3 connection.
Is this a marker interface for various kinds of push ids? Otherwise just the record is sufficient.
src/java.net.http/share/classes/java/net/http/HttpResponse.java line 937:
> 935: HttpRequest initiatingRequest,
> 936: HttpRequest pushPromiseRequest,
> 937: PushId pushid,
(Warning: I know little about HTTP, my assumptions and thus whole argument may be invalid below!)
This feels like users need to use push ids as units of synchronization on this handler, such as tracking this with a ConcurrentHashMap.
Is it possible for users to instead provide a `Function<PushId, PushPromiseHandler>` in `HttpClient::sendAsync`? I think this might make it easier for users as they no longer need to think about concurrency for different ids.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/24751#discussion_r2050992217
PR Review Comment: https://git.openjdk.org/jdk/pull/24751#discussion_r2050991104
PR Review Comment: https://git.openjdk.org/jdk/pull/24751#discussion_r2051001758
More information about the net-dev
mailing list