[
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