Restore handling of 0 bytes read

Issue: SPR-16728
This commit is contained in:
Rossen Stoyanchev
2018-04-16 09:59:34 -04:00
parent 0f91f4b960
commit 567733d2a1

View File

@@ -198,6 +198,8 @@ class ServletServerHttpRequest extends AbstractServerHttpRequest {
/**
* Read from the request body InputStream and return a DataBuffer.
* Invoked only when {@link ServletInputStream#isReady()} returns "true".
* @return a DataBuffer with data read, or {@link #EOF_BUFFER} if the input
* stream returned -1, or null if 0 bytes were read.
*/
@Nullable
DataBuffer readFromInputStream() throws IOException {
@@ -211,7 +213,8 @@ class ServletServerHttpRequest extends AbstractServerHttpRequest {
dataBuffer.write(this.buffer, 0, read);
return dataBuffer;
}
else if (read == -1) {
if (read == -1) {
return EOF_BUFFER;
}
@@ -273,13 +276,12 @@ class ServletServerHttpRequest extends AbstractServerHttpRequest {
protected DataBuffer read() throws IOException {
if (this.inputStream.isReady()) {
DataBuffer dataBuffer = readFromInputStream();
if (dataBuffer != EOF_BUFFER) {
return dataBuffer;
}
else {
if (dataBuffer == EOF_BUFFER) {
// No need to wait for container callback...
onAllDataRead();
dataBuffer = null;
}
return dataBuffer;
}
return null;
}