@ -213,6 +213,57 @@ public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
@@ -213,6 +213,57 @@ public class ContentCachingRequestWrapper extends HttpServletRequestWrapper {
this . is = is ;
}
@Override
public int readLine ( final byte [ ] b , final int off , final int len ) throws IOException {
int count = is . readLine ( b , off , len ) ;
cache ( b , off , count ) ;
return count ;
}
private void cache ( final byte [ ] b , final int off , final int count ) {
if ( contentCacheLimit ! = null & & cachedContent . size ( ) = = contentCacheLimit ) {
this . overflow = true ;
handleContentOverflow ( contentCacheLimit ) ;
} else {
int sizeToCache = contentCacheLimit = = null | | count + cachedContent . size ( ) < contentCacheLimit
? count
: contentCacheLimit - cachedContent . size ( ) ;
cachedContent . write ( b , off , sizeToCache ) ;
if ( sizeToCache < count ) {
this . overflow = true ;
handleContentOverflow ( contentCacheLimit ) ;
}
}
}
@Override
public int read ( final byte [ ] b ) throws IOException {
int count = super . read ( b ) ;
if ( ! this . overflow & & count > 0 ) {
if ( contentCacheLimit ! = null & & cachedContent . size ( ) = = contentCacheLimit ) {
this . overflow = true ;
handleContentOverflow ( contentCacheLimit ) ;
} else {
int sizeToCache = contentCacheLimit = = null | | count + cachedContent . size ( ) < contentCacheLimit
? count
: contentCacheLimit - cachedContent . size ( ) ;
cachedContent . write ( b , 0 , sizeToCache ) ;
if ( sizeToCache < count ) {
this . overflow = true ;
handleContentOverflow ( contentCacheLimit ) ;
}
}
}
return count ;
}
@Override
public int read ( final byte [ ] b , final int off , final int len ) throws IOException {
int count = is . read ( b , off , len ) ;
cache ( b , off , count ) ;
return count ;
}
@Override
public int read ( ) throws IOException {
int ch = this . is . read ( ) ;