[
https://issues.apache.org/jira/browse/SLING-4143?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14208027#comment-14208027
]
Bertrand Delacretaz commented on SLING-4143:
--------------------------------------------
Removing the Java 6 requirement shouldn't be hard, but do we really still care
about pre-Java 6?
Thinking about it you're right that catching both Error and Exception does not
make much sense. I'm always wary of catching Throwable though what do you
suggest?
I'm not sure what you mean by "an error is sent about the failing error handler
instead of the actual error having happened (in the DefaultErrorHandler)", can
you clarify with an example? I removed the stack trace of the error handler
Throwable from the HTTP response as that might disclose more information that
we want, so I agree that the HTTP response is not very helpful in terms of
troubleshooting.
> Exception or Error in error handler script/servlet should cause HTTP status
> 500
> -------------------------------------------------------------------------------
>
> Key: SLING-4143
> URL: https://issues.apache.org/jira/browse/SLING-4143
> Project: Sling
> Issue Type: Bug
> Components: Engine
> Affects Versions: Servlets Resolver 2.3.2, Engine 2.3.8
> Reporter: Bertrand Delacretaz
> Assignee: Bertrand Delacretaz
> Fix For: Servlets Resolver 2.3.4, Engine 2.3.10
>
>
> It looks like Sling does not set the response status if a custom error
> handler script is present which does not set the status itself. See examples
> below.
> I think Sling should detect this and set a sensible non-200 status in this
> case.
> Example 1: script doesn't set status _(update: after discussion on list we
> won't change this)_
> {code}
> $ cat > 404.jsp
> <html>Custom 404 page</html>
> $ curl -u admin:admin -T 404.jsp
> http://localhost:8888/apps/sling/servlet/errorhandler/404.jsp
> $ curl -D - http://localhost:8888/nonexisting
> HTTP/1.1 200 OK
> ...
> <html>Custom 404 page</html>
> {code}
> Example 2, scripts throws a RuntimeException - blank response with 200 status
> - this is wrong
> {code}
> $ cat > 404.jsp
> <% if(true) throw new RuntimeException("404 page failed"); %>
> $ curl -u admin:admin -T 404.jsp
> http://localhost:8888/apps/sling/servlet/errorhandler/404.jsp
> $ curl -D - http://localhost:8888/nonexisting
> HTTP/1.1 200 OK
> ...
> Content-Length: 0
> Server: Jetty(7.x.y-SNAPSHOT)
> {code}
> Example 3: scripts sets status - this one looks correct.
> {code}
> $ cat > 404.jsp
> <% response.setStatus(421); %>
> Custom 421 page
> $ curl -u admin:admin -T 404.jsp
> http://localhost:8888/apps/sling/servlet/errorhandler/404.jsp
> $ curl -D - http://localhost:8888/nonexisting
> HTTP/1.1 421 421
> ...
> Server: Jetty(7.x.y-SNAPSHOT)
> Custom 421 page
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)