Add OnCommittedResponseWrapper.setContentLengthLong

Add setContentLengthLong tracking to OnCommittedResponseWrapper in
order to detect commits on servlets that use setContentLengthLong to
announce the entity size they are about to write (as used in the
Apache Tomcat's DefaultServlet).

Fixes gh-7261
This commit is contained in:
Daniel Wegener 2019-08-15 22:31:10 +02:00 committed by Josh Cummings
parent 766c4434d4
commit 1a233a58c7
2 changed files with 17 additions and 0 deletions

View File

@ -69,6 +69,12 @@ public abstract class OnCommittedResponseWrapper extends HttpServletResponseWrap
super.setContentLength(len); super.setContentLength(len);
} }
@Override
public void setContentLengthLong(long len) {
setContentLength(len);
super.setContentLengthLong(len);
}
private void setContentLength(long len) { private void setContentLength(long len) {
this.contentLength = len; this.contentLength = len;
checkContentLength(0); checkContentLength(0);

View File

@ -1101,6 +1101,17 @@ public class OnCommittedResponseWrapperTests {
assertThat(committed).isTrue(); assertThat(committed).isTrue();
} }
// gh-7261
@Test
public void contentLengthLongOutputStreamWriteStringCommits() throws IOException {
String body = "something";
response.setContentLengthLong(body.length());
response.getOutputStream().print(body);
assertThat(committed).isTrue();
}
@Test @Test
public void addHeaderContentLengthPrintWriterWriteStringCommits() throws Exception { public void addHeaderContentLengthPrintWriterWriteStringCommits() throws Exception {
int expected = 1234; int expected = 1234;