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]