On Thu, 20 Nov 2025 14:13:50 GMT, Volkan Yazici <[email protected]> wrote:

> Add guards against `HttpHeaders::firstValueAsLong` failures. 
> `H3MalformedResponseTest` is overhauled – migrated to JUnit, reinforced with 
> exception type tests, etc. – but not all `firstValueAsLong` changes are 
> verified with new additional tests. `test/jdk/java/net/httpclient/` tests 
> still do pass.

Changes requested by dfuchs (Reviewer).

src/java.net.http/share/classes/jdk/internal/net/http/Http1Response.java line 
284:

> 282:         long clen;
> 283:         try {
> 284:             clen = readContentLength(headers, "", 0);

This does not look right - we should keep -1 as meaning that content length was 
not found.

src/java.net.http/share/classes/jdk/internal/net/http/Http1Response.java line 
289:

> 287:         }
> 288: 
> 289:         // Read if there are and less than `MAX_IGNORE` bytes

some missing words here...

src/java.net.http/share/classes/jdk/internal/net/http/Http1Response.java line 
291:

> 289:         // Read if there are and less than `MAX_IGNORE` bytes
> 290:         if (clen > 0 && clen <= MAX_IGNORE) {
> 291:             return readBody(discarding(), !request.isWebSocket(), 
> executor);

This does not look right, we should not close the connection if we have 
`Content-Length: 0`

src/java.net.http/share/classes/jdk/internal/net/http/common/Utils.java line 
1349:

> 1347:     // -- toAsciiString-like support to encode path and query URI 
> segments
> 1348: 
> 1349:     public static Long readContentLength(HttpHeaders headers, String 
> errorPrefix, long defaultIfMissing) throws ProtocolException {

I would prefer to use `OptionalLong` rather than nullable `Long`. Or maybe it's 
an oversight and the method is intended to return `long`? 
There seems to be quite some noise generated by trying to avoid using 
OptionalLong and I'm not sure I understand the reason.
Using Optional/OptionalLong makes it clearer whether the header was found or 
not.

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

PR Review: https://git.openjdk.org/jdk/pull/28431#pullrequestreview-3500010745
PR Review Comment: https://git.openjdk.org/jdk/pull/28431#discussion_r2556006255
PR Review Comment: https://git.openjdk.org/jdk/pull/28431#discussion_r2556003159
PR Review Comment: https://git.openjdk.org/jdk/pull/28431#discussion_r2556008868
PR Review Comment: https://git.openjdk.org/jdk/pull/28431#discussion_r2556028080

Reply via email to