Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.2
-
None
Description
Class HttpServletResponseBufferingWrapper contains subtle bug when it comes to buffering of response. It relies its behaviour on HTTP status code and buffers only if it was set to 404.
However, in following scenario current implementation won't work:
1. stream = response.getOutputStream() //non buffering output stream is returned because by default status code is set to 200
2. response.setStatusCode(404)
3. stream.write() //write details about error, this is going to be written to response because non-buffering output stream is in use
4. response.resetBufferedResponse() //this fails with IllegalStateException
However, in following scenario current implementation won't work:
1. stream = response.getOutputStream() //non buffering output stream is returned because by default status code is set to 200
2. response.setStatusCode(404)
3. stream.write() //write details about error, this is going to be written to response because non-buffering output stream is in use
4. response.resetBufferedResponse() //this fails with IllegalStateException