[
https://issues.apache.org/jira/browse/HTTPCORE-235?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12910202#action_12910202
]
Steve Loughran commented on HTTPCORE-235:
-----------------------------------------
I didn't see an IOE, I saw that I was getting "" back even though the
content-length was 54 octets. The root cause was my own - I was closing the
connection before trying to get the data out of the response- but the whole
problem wasn't surfacing in an exception, just an empty string.
I rewrote the code to do the download by creating a buffer of the exact size
promised, doing a blocking read, and throwing an IOE if there was less data
than promised or there was still some more data to come. Either state is an
error, at least as far as I'm concerned, at least when the content-length
header value >= 0
> EntityUtils.toString() doesn't detect/report less content being returned than
> was promised
> ------------------------------------------------------------------------------------------
>
> Key: HTTPCORE-235
> URL: https://issues.apache.org/jira/browse/HTTPCORE-235
> Project: HttpComponents HttpCore
> Issue Type: Bug
> Components: HttpCore
> Affects Versions: 4.0.1
> Reporter: Steve Loughran
>
> Also on my review of EntityUtils.toString(), I see that it's code to take an
> input stream and a content length only uses the content length parameter to
> set the size of the buffer -there is no attempt to verify that the amount of
> data received was as expected and raise an {{IOException}} if less data
> arrived.
> While this code will appear to work, especially on loopback and local
> connections, it is flawed long-haul where connections are often dropped
> early.
> I propose streaming the entity content to a byte array, validating the
> length, then building a string in the appropriate charset from the buffer if
> it is valid.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]