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]