[External] : Re: Http3 Client times out for an untrusted certificate
Josiah Noel
josiahnoel at gmail.com
Fri Nov 7 12:43:31 UTC 2025
I see, thanks for looking into it.
On Fri, Nov 7, 2025, 6:56 AM Daniel Fuchs <daniel.fuchs at oracle.com> wrote:
> Hi Josiah,
>
> On 07/11/2025 09:46, Daniel Fuchs wrote:
> > Does the server supports https? Because if the server does not
> > support https it might just be trying to read the request line
> > before responding, and the client might be waiting for the server
> > hello. The same would happen with HTTP/1.1 if you tried to use
> > https with a server that only supports http.
>
> So that seems to be the issue.
> I had a look at your script - and I believe that if
> you had used HttpsServer.create() instead of HttpServer.create()
> you would have got the exception as expected.
>
> I am not sure there's much we can do there. If you try to send
> an HTTP/1.1 https:// request to that server youn will observe
> the same behavior.
>
> Specifically try this:
>
> ```
> // http1 server on tcp 8080
> // btw what if we made a conveniece method? I'll contribute it
> myself, just say the word
> var http1 = HttpServer.create(new InetSocketAddress(8080), 0);
> http1.createContext("/", ctx -> ctx.sendResponseHeaders(101, -1));
> http1.start();
>
> var client = HttpClient.newBuilder()
> .version(HttpClient.Version.HTTP_1_1)
> .build();
> var request = HttpRequest.newBuilder()
> .uri(URI.create("https://localhost:8080/"))
> .build();
> System.out.println("req: " + request);
> var resp = client.send(request, HttpResponse.BodyHandlers.ofString());
> System.out.println("resp: " + resp);
> ```
>
> This has the same behaviour and does not involve HTTP/3.
> To see the exception, add this to the request in your
> original script:
>
> ```
> import java.net.http.HttpOption;
> import static java.net.http.HttpOption.H3_DISCOVERY;
> import static java.net.http.HttpOption.Http3DiscoveryMode.HTTP_3_URI_ONLY;
>
> ...
>
> HttpRequest.newBuilder().uri(URI.create("https://localhost:8080"))
> .setOption(H3_DISCOVERY, HTTP_3_URI_ONLY) <<<<< HTTP/3 only
> .GET().build(),
> ```
>
> this will prevent the client from falling back to TCP.
>
> best regards,
>
> -- daniel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/net-dev/attachments/20251107/07ba50b1/attachment-0001.htm>
More information about the net-dev
mailing list