Merge pull request #4290 from eclipse/jetty-9.4.x-4269-restore-PrintWriter-contract

Issue #4269 - Restoring PrintWriter contract on errors
This commit is contained in:
Joakim Erdfelt 2019-12-02 15:22:22 -06:00 committed by GitHub
commit d99ae19201
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 6 deletions

View File

@ -128,10 +128,13 @@ public class ResponseWriter extends PrintWriter
private void isOpen() throws IOException private void isOpen() throws IOException
{ {
if (_ioException != null) if (_ioException != null)
throw new RuntimeIOException(_ioException); throw _ioException;
if (_isClosed) if (_isClosed)
throw new EofException("Stream closed"); {
_ioException = new EofException("Stream closed");
throw _ioException;
}
} }
@Override @Override

View File

@ -54,7 +54,6 @@ import org.eclipse.jetty.http.HttpVersion;
import org.eclipse.jetty.http.MetaData; import org.eclipse.jetty.http.MetaData;
import org.eclipse.jetty.io.AbstractEndPoint; import org.eclipse.jetty.io.AbstractEndPoint;
import org.eclipse.jetty.io.ByteArrayEndPoint; import org.eclipse.jetty.io.ByteArrayEndPoint;
import org.eclipse.jetty.io.RuntimeIOException;
import org.eclipse.jetty.server.handler.AbstractHandler; import org.eclipse.jetty.server.handler.AbstractHandler;
import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandler;
import org.eclipse.jetty.server.handler.ErrorHandler; import org.eclipse.jetty.server.handler.ErrorHandler;
@ -711,7 +710,7 @@ public class ResponseTest
} }
@Test @Test
public void testWriteRuntimeIOException() throws Exception public void testWriteCheckError() throws Exception
{ {
Response response = getResponse(); Response response = getResponse();
@ -725,8 +724,8 @@ public class ResponseTest
writer.println("test"); writer.println("test");
assertTrue(writer.checkError()); assertTrue(writer.checkError());
RuntimeIOException e = assertThrows(RuntimeIOException.class, () -> writer.println("test")); writer.println("test"); // this should not cause an Exception
assertEquals(cause, e.getCause()); assertTrue(writer.checkError());
} }
@Test @Test