remm        2004/10/26 08:42:06

  Modified:    catalina/src/share/org/apache/catalina/core
                        StandardContext.java
               catalina/src/share/org/apache/catalina Context.java
               catalina/src/share/org/apache/catalina/connector
                        Request.java
  Log:
  - Add the encoded path to the Context interface.
  - Use that to set a URL encoded path for the session cookie.
  - Fixes bug 31090.
  
  Revision  Changes    Path
  1.155     +34 -1     
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java
  
  Index: StandardContext.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/StandardContext.java,v
  retrieving revision 1.154
  retrieving revision 1.155
  diff -u -r1.154 -r1.155
  --- StandardContext.java      25 Oct 2004 19:09:06 -0000      1.154
  +++ StandardContext.java      26 Oct 2004 15:42:02 -0000      1.155
  @@ -86,6 +86,7 @@
   import org.apache.catalina.util.CharsetMapper;
   import org.apache.catalina.util.ExtensionValidator;
   import org.apache.catalina.util.RequestUtil;
  +import org.apache.catalina.util.URLEncoder;
   import org.apache.commons.logging.Log;
   import org.apache.commons.logging.LogFactory;
   import org.apache.commons.modeler.Registry;
  @@ -145,6 +146,25 @@
       private static final JdkCompat jdkCompat = JdkCompat.getJdkCompat();
   
   
  +    /**
  +     * Array containing the safe characters set.
  +     */
  +    protected static URLEncoder urlEncoder;
  +
  +
  +    /**
  +     * GMT timezone - all HTTP dates are on GMT
  +     */
  +    static {
  +        urlEncoder = new URLEncoder();
  +        urlEncoder.addSafeCharacter('-');
  +        urlEncoder.addSafeCharacter('_');
  +        urlEncoder.addSafeCharacter('.');
  +        urlEncoder.addSafeCharacter('*');
  +        urlEncoder.addSafeCharacter('/');
  +    }
  +
  +
       // ----------------------------------------------------- Instance Variables
   
   
  @@ -265,6 +285,12 @@
        */
       private boolean crossContext = false;
   
  +    
  +    /**
  +     * Encoded path.
  +     */
  +    private String encodedPath = null;
  +    
   
       /**
        * The "follow standard delegation model" flag that will be used to
  @@ -628,8 +654,15 @@
   
       // ----------------------------------------------------- Context Properties
   
  +
  +    public String getEncodedPath() {
  +        return encodedPath;
  +    }
  +
  +
       public void setName( String name ) {
           super.setName( name );
  +        encodedPath = urlEncoder.encode(name);
       }
   
   
  
  
  
  1.18      +7 -1      
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Context.java
  
  Index: Context.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Context.java,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Context.java      28 Jul 2004 18:02:15 -0000      1.17
  +++ Context.java      26 Oct 2004 15:42:05 -0000      1.18
  @@ -253,6 +253,12 @@
   
   
       /**
  +     * Return the URL encoded context path, using UTF-8.
  +     */
  +    public String getEncodedPath();
  +
  +
  +    /**
        * Return the login configuration descriptor for this web application.
        */
       public LoginConfig getLoginConfig();
  
  
  
  1.16      +2 -2      
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/connector/Request.java
  
  Index: Request.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/connector/Request.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Request.java      12 Oct 2004 22:53:16 -0000      1.15
  +++ Request.java      26 Oct 2004 15:42:05 -0000      1.16
  @@ -2220,7 +2220,7 @@
           cookie.setMaxAge(-1);
           String contextPath = null;
           if (!connector.getEmptySessionPath() && (getContext() != null)) {
  -            contextPath = getContext().getPath();
  +            contextPath = getContext().getEncodedPath();
           }
           if ((contextPath != null) && (contextPath.length() > 0)) {
               cookie.setPath(contextPath);
  
  
  

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

Reply via email to