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()); }