larryi      02/02/04 17:22:43

  Modified:    src/share/org/apache/tomcat/modules/generators
                        ErrorHandler.java
  Log:
  Fix for Bug 4600.
  
  Make the default status code for the RedirectHandler configurable.  The
  defaultRedirectStatus attribute may be set to "301" or "302".  This
  default will affect directory redirections done by the StaticInterceptor.
  
  Revision  Changes    Path
  1.24      +19 -2     
jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/ErrorHandler.java
  
  Index: ErrorHandler.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/generators/ErrorHandler.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ErrorHandler.java 31 Dec 2001 22:23:42 -0000      1.23
  +++ ErrorHandler.java 5 Feb 2002 01:22:43 -0000       1.24
  @@ -81,6 +81,7 @@
   public final class ErrorHandler extends BaseInterceptor {
       private Context rootContext=null;
       boolean showDebugInfo=true;
  +    int defaultRedirectStatus=301;
       
       public ErrorHandler() {
       }
  @@ -89,6 +90,15 @@
        showDebugInfo=b;
       }
   
  +    public void setDefaultRedirectStatus( String s ) {
  +        if( "302".equals(s) )
  +            defaultRedirectStatus=302;
  +        else if( "301".equals(s) )
  +            defaultRedirectStatus=301;
  +        else
  +            defaultRedirectStatus=301;
  +    }
  +
       public void engineInit(ContextManager cm ) {
       }
   
  @@ -143,7 +153,9 @@
   
        // Default status handlers
           // Assume existing error pages are valid.  Don't overwrite with default.
  -     ctx.addServlet( new RedirectHandler(this));
  +        RedirectHandler rh = new RedirectHandler(this);
  +        rh.setDefaultRedirectStatus(defaultRedirectStatus);
  +     ctx.addServlet( rh );
           if (ctx.getErrorPage("302") == null)
               ctx.addErrorPage( "302", "tomcat.redirectHandler");
           if (ctx.getErrorPage("301") == null)
  @@ -765,6 +777,7 @@
       static StringManager sm=StringManager.
        getManager("org.apache.tomcat.resources");
       int sbNote=0;
  +    int defaultRedirectStatus=301;
   
       RedirectHandler(BaseInterceptor bi) {
        //setOrigin( Handler.ORIGIN_INTERNAL );
  @@ -772,6 +785,10 @@
        setModule( bi );
       }
   
  +    public void setDefaultRedirectStatus( int status ) {
  +        defaultRedirectStatus=status;
  +    }
  +
       // We don't want interceptors called for redirect
       // handler
       public void doService(Request req, Response res)
  @@ -783,7 +800,7 @@
   
        if( res.getStatus() != 301 &&
            res.getStatus() != 302 ) {
  -         res.setStatus( 301 );
  +         res.setStatus( defaultRedirectStatus );
        }
        
        location = makeAbsolute(req, location);
  
  
  

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

Reply via email to