amyroh      2003/02/13 12:52:09

  Modified:    catalina/src/share/org/apache/catalina/valves
                        ErrorDispatcherValve.java
  Log:
  Back port patch from tomcat 5 to look up <error-page> for 500.
  
  Revision  Changes    Path
  1.10      +26 -5     
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/ErrorDispatcherValve.java
  
  Index: ErrorDispatcherValve.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/valves/ErrorDispatcherValve.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- ErrorDispatcherValve.java 15 Aug 2002 23:51:14 -0000      1.9
  +++ ErrorDispatcherValve.java 13 Feb 2003 20:52:09 -0000      1.10
  @@ -254,6 +254,20 @@
                       log("Exception Processing " + errorPage, e);
                   }
               }
  +        } else {
  +            // A custom error-page has not been defined for the exception
  +            // that was thrown during request processing. Check if an
  +            // error-page for error code 500 was specified and if so, 
  +            // send that page back as the response.
  +            ServletResponse sresp = (ServletResponse) response;
  +            if (sresp instanceof HttpServletResponse) {
  +                ((HttpServletResponse) sresp).setStatus(
  +                    HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
  +                // The response is an error
  +                response.setError();
  +
  +                status(request, response);
  +            }
           }
   
       }
  @@ -381,7 +395,14 @@
           try {
   
               // Reset the response if possible (else IllegalStateException)
  -            hres.reset();
  +            //hres.reset();
  +            // Reset the response (keeping the real error code and message)
  +            Integer statusCodeObj =
  +                (Integer) hreq.getAttribute(Globals.STATUS_CODE_ATTR);
  +            int statusCode = statusCodeObj.intValue();
  +            String message = 
  +                (String) hreq.getAttribute(Globals.ERROR_MESSAGE_ATTR);
  +            ((HttpResponse) response).reset(statusCode, message);
   
               // Forward control to the specified location
               ServletContext servletContext =
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to