Index: web/web-core/src/main/java/org/apache/catalina/core/ApplicationDispatcherForward.java =================================================================== --- web/web-core/src/main/java/org/apache/catalina/core/ApplicationDispatcherForward.java (revision 45702) +++ web/web-core/src/main/java/org/apache/catalina/core/ApplicationDispatcherForward.java (working copy) @@ -125,11 +125,18 @@ ((StandardHost)(context.getParent())).getErrorReportValveClass(); if (errorReportValveClass != null && statusCode >= 400 && exception == null) { - boolean matchFound = status(hreq, hres, - getResponseFacade(hres), context, wrapper, statusCode); - if (!matchFound) { - serveDefaultErrorPage(hreq, hres, - getResponseFacade(hres), statusCode); + ResponseFacade responseFacade = getResponseFacade(hres); + /* + * Attempt error-page rendering only if response.sendError(), as + * opposed to response.setStatus(), was called. + */ + if (responseFacade.isError()) { + boolean matchFound = status(hreq, hres, + responseFacade, context, wrapper, statusCode); + if (!matchFound) { + serveDefaultErrorPage(hreq, hres, + getResponseFacade(hres), statusCode); + } } } @@ -164,14 +171,6 @@ Wrapper wrapper, int statusCode) { - /* - * Attempt error-page mapping only if response.sendError(), as - * opposed to response.setStatus(), was called. - */ - if (!responseFacade.isError()) { - return false; - } - boolean matchFound = false; ErrorPage errorPage = context.findErrorPage(statusCode);