RFR: 8335135: HttpURLConnection#HttpInputStream does not throw IOException when response is truncated

Daniel Jeliński djelinski at openjdk.org
Wed Jun 26 17:07:33 UTC 2024


Currently HttpUrlConnection accepts truncated responses: if the server sends a `Content-Length` header, and then closes the connection before transferring all promised bytes, the input stream reports a clean EOF.

In this PR I modify the MeteredStream class to throw an IOException when it detects EOF before receiving all promised response bytes. MeteredStream (or its subclass KeepAliveStream) is used when the response contains a content-length header.

The included test fails without the change, passes with it.
The same exception message and type is reported when a chunked response (`Transfer-Encoding: chunked`) is truncated.
Unknown length responses that are terminated by EOF continue to work.

2 tests depended on the old behavior and had to be adjusted. The remaining tier 1-3 tests continue to pass.

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

Commit messages:
 - Fix KeepAliveStream test
 - Fix BasicTest4
 - Throw an exception on premature EOF

Changes: https://git.openjdk.org/jdk/pull/19909/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19909&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8335135
  Stats: 120 lines in 4 files changed: 115 ins; 0 del; 5 mod
  Patch: https://git.openjdk.org/jdk/pull/19909.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19909/head:pull/19909

PR: https://git.openjdk.org/jdk/pull/19909


More information about the net-dev mailing list