[EMAIL PROTECTED] wrote:

> billbarker    2003/03/12 22:17:53
> 
>   Modified:    util/java/org/apache/tomcat/util/http/mapper Mapper.java
>   Log:
>   Initial support to do a redirect to a directory where the URL doesn't
>   end in '/'.
>   
>   This prevents browsers from becoming confused when they get a 401
>   response for e.g. /foo.  With this turned on, the browser will get a 302
>   response to /foo/ before authentication is checked.
>   
>   It is currently off by default to save the cost of a JNDI lookup on each
>   request.


IMHO - it should be on if it improves the situation with the auth.

Tomcat5 will have plenty of performance improvements - and we can break
some defaults if we think it is right.



Costin




>   
>   Revision  Changes    Path
>   1.11      +39 -0    
>  
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/Mapper.java
>   
>   Index: Mapper.java
>   ===================================================================
>   RCS file:
>  
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/http/mapper/Mapper.java,v
>   retrieving revision 1.10 retrieving revision 1.11
>   diff -u -r1.10 -r1.11
>   --- Mapper.java     7 Mar 2003 16:03:33 -0000       1.10
>   +++ Mapper.java     13 Mar 2003 06:17:53 -0000      1.11
>   @@ -97,6 +97,12 @@
>         */
>        protected boolean processWelcomeResources = true;
>    
>   +    /**
>   +     * Flag indicating that we should redirect to a directory when the
>   URL
>   +     * doesn't end in a '/'.  It overrided the Authenticator, so the
>   redirect
>   +     * done before authentication.
>   +     */
>   +    protected boolean redirectDirectories = false;
>    
>        // --------------------------------------------------------- Public
>        Methods
>    
>   @@ -143,6 +149,21 @@
>            this.processWelcomeResources = processWelcomeResources;
>        }
>    
>   +    /**
>   +     * Get the flag that indicates if we redirect to directories that
>   don't
>   +     * end a '/'.
>   +     */
>   +    public boolean getRedirectDirectories() {
>   +        return redirectDirectories;
>   +    }
>   +
>   +    /**
>   +     * Set the flag that indicates if we redirect to directories that
>   don't
>   +     * end in a '/'.
>   +     */
>   +    public void setRedirectDirectories(boolean rd) {
>   +        redirectDirectories = rd;
>   +    }
>    
>        /**
>         * Add a new host to the mapper.
>   @@ -570,6 +591,24 @@
>                        (path.getBuffer(), path.getStart(),
>                        path.getLength());
>                    mappingData.wrapperPath.setChars
>                        (path.getBuffer(), path.getStart(),
>                        path.getLength());
>   +            }
>   +            if( redirectDirectories ) {
>   +                char[] buf = path.getBuffer();
>   +                if( context.resources != null && buf[pathEnd -1 ] !=
>   '/') {
>   +                    Object file = null;
>   +                    try {
>   +                        file =
>   context.resources.lookup(path.toString());
>   +                    } catch(NamingException nex) {
>   +                        // Swallow, since someone else handles the 404
>   +                    }
>   +                    if(file != null && file instanceof DirContext ) {
>   +                        CharChunk dirPath = path.getClone();
>   +                        dirPath.append('/');
>   +                        mappingData.redirectPath.setChars
>   +                            (dirPath.getBuffer(), dirPath.getStart(),
>   +                             dirPath.getLength());
>   +                    }
>   +                }
>                }
>            }



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

Reply via email to