RFR: 8376031: HttpsURLConnection.getServerCertificates() throws "java.lang.IllegalStateException: connection not yet open" for the HEAD method

Daniel Fuchs dfuchs at openjdk.org
Tue Feb 3 15:04:58 UTC 2026


On Sun, 1 Feb 2026 11:42:19 GMT, Jaikiran Pai <jpai at openjdk.org> wrote:

>> The issue here is that `HttpURLConnection` is automatically disconnected (`HttpClient` is set to `null`, `connected` is set to `false`) when a response with no response body bytes is received. This happens before a fake empty body input stream is returned to the user. That behaviour also occurs with any method for which `content-length: 0` is returned (GET, POST, custom, anything), and with any status code (204, 304) for which there is no body.
>> 
>> In this case, the proposed fix is to store the `SSLSession` in the `AbstractDelegateHttpsURLConnection` subclass until such a time where `disconnect()` is explicitely closed. Information pertaining to SSL, such as server certificates, can be extracted from the saved `SSLSession`.
>
> test/jdk/sun/net/www/protocol/https/HttpsURLConnection/GetServerCertificates.java line 117:
> 
>> 115: 
>> 116:         } finally {
>> 117:              server.stop(1000);
> 
> In recent updates to tests, we have been using `stop(0)`. Is the 1 second delay necessary?

The delay is in seconds (=1000s). This ensures that all requests have terminated.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/29489#discussion_r2759534204


More information about the net-dev mailing list