[ 
https://issues.apache.org/jira/browse/SLING-2724?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13574213#comment-13574213
 ] 

Carsten Ziegeler commented on SLING-2724:
-----------------------------------------

Actually this is a little bit complicated and I'm not sure if we can/should do 
anything about it:

The original jsp handling the request calls sendError(). As the error handling 
is done by custom scripts (error handler jsps), such a script e.g. the 500.jsp 
is called. These scripts do not use the sendError() command. Rather, they write 
output (the error message or whatever) to the jsp writer. So once the error 
handler is finished, the response does not get flagged as committed as this is 
normal jsp output. So the original jsp which called sendError() continues and 
can append content to the writer.

Now we could in such cases buffer the whole output of the error handling script 
within the script resolver error handler, and then call internal sendError() 
with the buffered output as the content body.

This sounds like a lot of work for a rare developer error: the developer who 
called the sendError() should have read the servlet spec and actually avoid any 
output afterwards :) So I'm inclined to close this as wontfix

Opinions?
                
> Error handling doesn't respect servlet spec
> -------------------------------------------
>
>                 Key: SLING-2724
>                 URL: https://issues.apache.org/jira/browse/SLING-2724
>             Project: Sling
>          Issue Type: Bug
>          Components: Servlets
>            Reporter: Antonio Sanso
>
> If there is some servlet that is sending a 500 error 
> (response.sendError(500)) and output something after e.g. "All good" (maybe 
> this is the wrong part...) and a 500.jsp exists, Sling will "shows" both:
> - the error page 500.jsp
>  - and the the extra output (e.g. All good) 
> This seems to violate the spec:
> "These methods [sendError, sendRedirect] will have the side effect of 
> committing the response, if it has not already been committed, and 
> terminating it. No further output to the client should be made by the servlet 
> after these methods are called. If data is written to the response after 
> these methods are called, the data is ignored."
> Integration test showing the issue in [0]
> Mailing list thread in [1]
> [0] 
> https://svn.apache.org/repos/asf/sling/trunk/launchpad/integration-tests/src/main/java/org/apache/sling/launchpad/webapp/integrationtest/servlets/resolver/errorhandler/ErrorHandlingTest.java
> [1] sling.markmail.org/thread/k2t7p5mhi4hgelwb

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to