craigmcc 01/09/05 11:35:32
Modified: catalina/src/share/org/apache/catalina/util CookieTools.java
catalina/src/test/org/apache/catalina/util
CookieToolsTestCase.java
Log:
Some browsers don't like URL-encoded "path" attributes in cookies, so
don't URL encode that part. For such browsers, the net effect is that
sessions would have worked only with URL rewriting. Now, cookie based
sessions work correctly again.
Submitted by: Glenn Nielsen <[EMAIL PROTECTED]>
Revision Changes Path
1.5 +8 -7
jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/CookieTools.java
Index: CookieTools.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/CookieTools.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- CookieTools.java 2001/09/04 21:02:35 1.4
+++ CookieTools.java 2001/09/05 18:35:32 1.5
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/CookieTools.java,v
1.4 2001/09/04 21:02:35 craigmcc Exp $
- * $Revision: 1.4 $
- * $Date: 2001/09/04 21:02:35 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/util/CookieTools.java,v
1.5 2001/09/05 18:35:32 craigmcc Exp $
+ * $Revision: 1.5 $
+ * $Date: 2001/09/05 18:35:32 $
*
* ====================================================================
*
@@ -110,7 +110,7 @@
buf.append(URLEncoder.encode(cookie.getName()));
buf.append("=");
- maybeQuote(version, buf, cookie.getValue());
+ maybeQuote(version, buf, URLEncoder.encode(cookie.getValue()));
// add version 1 specific information
if (version == 1) {
@@ -120,7 +120,8 @@
// Comment=comment
if (cookie.getComment() != null) {
buf.append (";Comment=");
- maybeQuote (version, buf, cookie.getComment());
+ maybeQuote (version, buf,
+ URLEncoder.encode(cookie.getComment()));
}
}
@@ -166,10 +167,10 @@
String value)
{
if (version == 0 || isToken (value))
- buf.append (URLEncoder.encode(value));
+ buf.append (value);
else {
buf.append ('"');
- buf.append (URLEncoder.encode(value));
+ buf.append (value);
buf.append ('"');
}
}
1.3 +6 -6
jakarta-tomcat-4.0/catalina/src/test/org/apache/catalina/util/CookieToolsTestCase.java
Index: CookieToolsTestCase.java
===================================================================
RCS file:
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/catalina/util/CookieToolsTestCase.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- CookieToolsTestCase.java 2001/09/05 17:29:14 1.2
+++ CookieToolsTestCase.java 2001/09/05 18:35:32 1.3
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/catalina/util/CookieToolsTestCase.java,v
1.2 2001/09/05 17:29:14 craigmcc Exp $
- * $Revision: 1.2 $
- * $Date: 2001/09/05 17:29:14 $
+ * $Header:
/home/cvs/jakarta-tomcat-4.0/catalina/src/test/org/apache/catalina/util/CookieToolsTestCase.java,v
1.3 2001/09/05 18:35:32 craigmcc Exp $
+ * $Revision: 1.3 $
+ * $Date: 2001/09/05 18:35:32 $
*
* ====================================================================
*
@@ -74,7 +74,7 @@
* Unit tests for the <code>CookieTools</code> class.
*
* @author Craig R. McClanahan
- * @version $Revision: 1.2 $ $Date: 2001/09/05 17:29:14 $
+ * @version $Revision: 1.3 $ $Date: 2001/09/05 18:35:32 $
*/
public class CookieToolsTestCase extends TestCase {
@@ -185,13 +185,13 @@
sb = new StringBuffer();
CookieTools.getCookieHeaderValue(version0, sb);
assertEquals("Version 0 cookie header value",
-
"Version+0+Name=Version+0+Value;Domain=localhost;Path=%2Fversion0",
+
"Version+0+Name=Version+0+Value;Domain=localhost;Path=/version0",
sb.toString());
sb = new StringBuffer();
CookieTools.getCookieHeaderValue(version1, sb);
assertEquals("Version 1 cookie header value",
-
"Version+1+Name=\"Version+1+Value\";Version=1;Comment=\"Version+1+Comment\";Domain=localhost;Discard;Path=\"%2Fversion1\"",
+
"Version+1+Name=Version+1+Value;Version=1;Comment=Version+1+Comment;Domain=localhost;Discard;Path=\"/version1\"",
sb.toString());
}