2014-09-25 23:38 GMT+04:00  <ma...@apache.org>:
> Author: markt
> Date: Thu Sep 25 19:38:15 2014
> New Revision: 1627619
>
> URL: http://svn.apache.org/r1627619
> Log:
> Refactor cookie parsing to make it more pluggable
>
> Added:
>     tomcat/trunk/java/org/apache/tomcat/util/http/CookieProcessor.java   
> (with props)
>     tomcat/trunk/java/org/apache/tomcat/util/http/Rfc6265CookieProcessor.java 
>   (with props)
> Modified:
>     tomcat/trunk/java/org/apache/catalina/Context.java
>     tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java
>     tomcat/trunk/java/org/apache/catalina/connector/Request.java
>     tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
>     tomcat/trunk/java/org/apache/catalina/core/mbeans-descriptors.xml
>     tomcat/trunk/java/org/apache/catalina/startup/ContextRuleSet.java
>     tomcat/trunk/java/org/apache/catalina/startup/FailedContext.java
>     tomcat/trunk/java/org/apache/coyote/Request.java
>     tomcat/trunk/java/org/apache/tomcat/util/http/Cookies.java
>     tomcat/trunk/test/org/apache/catalina/core/TesterContext.java
>     tomcat/trunk/test/org/apache/tomcat/util/http/TestCookies.java
>     
> tomcat/trunk/test/org/apache/tomcat/util/http/TesterCookiesPerformance.java
>     tomcat/trunk/webapps/docs/config/context.xml
>

(...)


> Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1627619&r1=1627618&r2=1627619&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original)
> +++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Thu Sep 25 
> 19:38:15 2014
> @@ -84,10 +84,11 @@ import org.apache.tomcat.util.ExceptionU
>  import org.apache.tomcat.util.buf.B2CConverter;
>  import org.apache.tomcat.util.buf.ByteChunk;
>  import org.apache.tomcat.util.buf.MessageBytes;
> -import org.apache.tomcat.util.http.Cookies;
> +import org.apache.tomcat.util.http.CookieProcessor;
>  import org.apache.tomcat.util.http.FastHttpDateFormat;
>  import org.apache.tomcat.util.http.Parameters;
>  import org.apache.tomcat.util.http.ServerCookie;
> +import org.apache.tomcat.util.http.ServerCookies;
>  import org.apache.tomcat.util.http.fileupload.FileItem;
>  import org.apache.tomcat.util.http.fileupload.FileUploadBase;
>  import 
> org.apache.tomcat.util.http.fileupload.FileUploadBase.InvalidContentTypeException;
> @@ -283,12 +284,20 @@ public class Request
>
>
>      /**
> -     * Cookies parsed flag.
> +     * Cookie headers parsed flag. Indicates that the cookie headers have 
> been
> +     * parsed into ServerCookies.
>       */
>      protected boolean cookiesParsed = false;
>
>
>      /**
> +     * Cookie parsed flag. Indicates that the ServerCookies have been 
> converted
> +     * into user facing Cookie objects.
> +     */
> +    protected boolean cookiesConverted = false;
> +
> +
> +    /**
>       * Secure flag.
>       */
>      protected boolean secure = false;
> @@ -462,6 +471,7 @@ public class Request
>          }
>          partsParseException = null;
>          cookiesParsed = false;
> +        cookiesConverted = false;
>          locales.clear();
>          localesParsed = false;
>          secure = false;
> @@ -1668,7 +1678,7 @@ public class Request
>      public void addCookie(Cookie cookie) {
>
>          if (!cookiesParsed) {

I think that the above condition shall also be changed to if
(!cookiesConverted).

If we skip conversion here and convertCookies() method is called
later, it will overwrite cookies array with "cookies = new
Cookie[count];"  so any cookies added here will be lost.

> -            parseCookies();
> +            convertCookies();
>          }
>
>          int size = 0;

Best regards,
Konstantin Kolinko

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to