I was looking into a bug in FileUpload 2.0.0-M1 and tracked it down to a misuse
of BoundedInputStream.onMaxLength. The reason I'm sending this email before
submitting a patch to FileUpload is that I believe this behavior is unexpected
enough to warrant a little extra in the onMaxLength docstring.
The onMaxLength method's docs say:
> A caller has caused a request that would cross the {@code maxLength} boundary.
This is correct, but it may not be immediately obvious that checking an EOF
counts as crossing the boundary. This means that onMaxLength will trigger if
the length of the stream is *equal* to the maxLength.
This is unavoidable without a buffer, as you always need to read one more byte
to determine whether the stream has ended. If you have a stream of 6 bytes, you
need to read 7 in order to check whether the last byte is an EOF or not.
So perhaps the documentation could be modified to something like:
> A caller has caused a request that would cross the {@code maxLength}
> boundary. This includes reads that return end of stream. Therefore streams
> whose length is exactly equal to maxLength will also trigger this method.
--
James Reeves