@ -48,6 +48,8 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
@@ -48,6 +48,8 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
@ -74,14 +76,27 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
@@ -74,14 +76,27 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
@Override
publicvoidsendError(intsc)throwsIOException{
copyBodyToResponse();
super.sendError(sc);
try{
super.sendError(sc);
}
catch(IllegalStateExceptionex){
// Possibly on Tomcat when called too late: fall back to silent setStatus
// Possibly on Tomcat when called too late: fall back to silent setStatus
super.setStatus(sc,msg);
}
this.statusCode=sc;
}
@ -111,6 +126,7 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
@@ -111,6 +126,7 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
if(len>this.content.capacity()){
this.content.resize(len);
}
this.contentLength=len;
}
// Overrides Servlet 3.1 setContentLengthLong(long) at runtime
@ -119,9 +135,11 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
@@ -119,9 +135,11 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
thrownewIllegalArgumentException("Content-Length exceeds ShallowEtagHeaderFilter's maximum ("+
Integer.MAX_VALUE+"): "+len);
}
if(len>this.content.capacity()){
this.content.resize((int)len);
intlenInt=(int)len;
if(lenInt>this.content.capacity()){
this.content.resize(lenInt);
}
this.contentLength=lenInt;
}
@Override
@ -158,7 +176,10 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {
@@ -158,7 +176,10 @@ public class ContentCachingResponseWrapper extends HttpServletResponseWrapper {