You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2013/02/21 16:22:42 UTC
svn commit: r1448679 - in /tomcat/trunk/java/org/apache/tomcat/util/http:
CookieSupport.java Cookies.java
Author: remm
Date: Thu Feb 21 15:22:42 2013
New Revision: 1448679
URL: http://svn.apache.org/r1448679
Log:
String unescaping modifies the buffer used for the cookie, and will corrupt the original cookie header
[visible when displaying them using getHeader]. Experiment with an option to preserve them. I don't think
this should be the default, as it is almost never useful, and can be a bit wasteful.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/http/CookieSupport.java
tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java
Modified: tomcat/trunk/java/org/apache/tomcat/util/http/CookieSupport.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/CookieSupport.java?rev=1448679&r1=1448678&r2=1448679&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/CookieSupport.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/CookieSupport.java Thu Feb 21 15:22:42 2013
@@ -63,6 +63,12 @@ public final class CookieSupport {
public static final boolean ALLOW_NAME_ONLY;
/**
+ * If set to true, the cookie header will be preserved. In most cases
+ * except debugging, this is not useful.
+ */
+ public static final boolean PRESERVE_COOKIE_HEADER;
+
+ /**
* The list of separators that apply to version 0 cookies. To quote the
* spec, these are comma, semi-colon and white-space. The HTTP spec
* definition of linear white space is [CRLF] 1*( SP | HT )
@@ -100,6 +106,15 @@ public final class CookieSupport {
Boolean.valueOf(alwaysAddExpires).booleanValue();
}
+ String preserveCookieHeader = System.getProperty(
+ "org.apache.tomcat.util.http.ServerCookie.PRESERVE_COOKIE_HEADER");
+ if (preserveCookieHeader == null) {
+ PRESERVE_COOKIE_HEADER = STRICT_SERVLET_COMPLIANCE;
+ } else {
+ PRESERVE_COOKIE_HEADER =
+ Boolean.valueOf(preserveCookieHeader).booleanValue();
+ }
+
String fwdSlashIsSeparator = System.getProperty(
"org.apache.tomcat.util.http.ServerCookie.FWD_SLASH_IS_SEPARATOR");
if (fwdSlashIsSeparator == null) {
Modified: tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java?rev=1448679&r1=1448678&r2=1448679&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java Thu Feb 21 15:22:42 2013
@@ -165,9 +165,18 @@ public final class Cookies {
log.debug("Cookies: Parsing b[]: " + cookieValue.toString());
}
ByteChunk bc=cookieValue.getByteChunk();
- processCookieHeader( bc.getBytes(),
- bc.getOffset(),
- bc.getLength());
+ if (CookieSupport.PRESERVE_COOKIE_HEADER) {
+ int len = bc.getLength();
+ if (len > 0) {
+ byte[] buf = new byte[len];
+ System.arraycopy(bc.getBytes(), bc.getOffset(), buf, 0, len);
+ processCookieHeader(buf, 0, len);
+ }
+ } else {
+ processCookieHeader( bc.getBytes(),
+ bc.getOffset(),
+ bc.getLength());
+ }
pos++;// search from the next position
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org