You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/11/06 16:04:46 UTC

svn commit: r1712974 - in /tomcat/trunk/java/org/apache/catalina/core: LocalStrings.properties StandardHostValve.java

Author: markt
Date: Fri Nov  6 15:04:46 2015
New Revision: 1712974

URL: http://svn.apache.org/viewvc?rev=1712974&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=58581
If custom error page fails, fall back to standard error page rather than throwing an NPE.
Based on a patch by Huxing Zhang.

Modified:
    tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties
    tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java

Modified: tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=1712974&r1=1712973&r2=1712974&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/catalina/core/LocalStrings.properties Fri Nov  6 15:04:46 2015
@@ -185,6 +185,7 @@ standardHost.noContext=No Context config
 standardHost.notContext=Child of a Host must be a Context
 standardHost.nullName=Host name is required
 standardHost.problematicAppBase=Using an empty string for appBase on host [{0}] will set it to CATALINA_BASE, which is a bad idea
+standardHostValue.customStatusFailed=Custom error page [{0}] could not be dispatched correctly
 standardServer.accept.timeout=The socket listening for the shutdown command experienced an unexpected timeout [{0}] milliseconds after the call to accept(). Is this an instance of bug 56684?
 standardServer.shutdownViaPort=A valid shutdown command was received via the shutdown port. Stopping the Server instance.
 standardServer.storeConfig.notAvailable=No StoreConfig implementation was registered as an MBean named [{0}] so no configuration could be saved. A suitable MBean is normally registered via the StoreConfigLifecyleListener.

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java?rev=1712974&r1=1712973&r2=1712974&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardHostValve.java Fri Nov  6 15:04:46 2015
@@ -231,7 +231,7 @@ final class StandardHostValve extends Va
             // Look for a default error page
             errorPage = context.findErrorPage(0);
         }
-        if (errorPage != null && response.setErrorReported()) {
+        if (errorPage != null && response.isErrorReportRequired()) {
             response.setAppCommitted(false);
             request.setAttribute(RequestDispatcher.ERROR_STATUS_CODE,
                               Integer.valueOf(statusCode));
@@ -255,6 +255,7 @@ final class StandardHostValve extends Va
             request.setAttribute(RequestDispatcher.ERROR_REQUEST_URI,
                                  request.getRequestURI());
             if (custom(request, response, errorPage)) {
+                response.setErrorReported();
                 try {
                     response.finishResponse();
                 } catch (ClientAbortException e) {
@@ -379,6 +380,12 @@ final class StandardHostValve extends Va
             RequestDispatcher rd =
                 servletContext.getRequestDispatcher(errorPage.getLocation());
 
+            if (rd == null) {
+                container.getLogger().error(
+                    sm.getString("standardHostValue.customStatusFailed", errorPage.getLocation()));
+                return false;
+            }
+
             if (response.isCommitted()) {
                 // Response is committed - including the error page is the
                 // best we can do



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org