2014-06-13 15:37 GMT+04:00  <ma...@apache.org>:
> Author: markt
> Date: Fri Jun 13 11:37:24 2014
> New Revision: 1602386
>
> URL: http://svn.apache.org/r1602386
> Log:
> Tiny bit of de-duplication.
> Add reference to RFC2616 for case insensitivity of transfer encoding
> names.
>
> Modified:
>     tomcat/tc7.0.x/trunk/   (props changed)
>     
> tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
>
> Propchange: tomcat/tc7.0.x/trunk/
> ------------------------------------------------------------------------------
>   Merged /tomcat/trunk:r1599739
>
> Modified: 
> tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1602386&r1=1602385&r2=1602386&view=diff
> ==============================================================================
> --- 
> tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
>  (original)
> +++ 
> tomcat/tc7.0.x/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
>  Fri Jun 13 11:37:24 2014
> @@ -713,8 +713,12 @@ public abstract class AbstractHttp11Proc
>       * Add an input filter to the current request. If the encoding is not
>       * supported, a 501 response will be returned to the client.
>       */
> -    protected void addInputFilter(InputFilter[] inputFilters,
> -                                     String encodingName) {
> +    private void addInputFilter(InputFilter[] inputFilters, String 
> encodingName) {
> +
> +        // Trim provided encoding name and convert to lower case since 
> transfer
> +        // encoding names are case insensitive. (RFC2616, section 3.6)
> +        encodingName = encodingName.trim().toLowerCase(Locale.ENGLISH);
> +
>          if (encodingName.equals("identity")) {
>              // Skip
>          } else if (encodingName.equals("chunked")) {
> @@ -1314,14 +1318,12 @@ public abstract class AbstractHttp11Proc
>              int commaPos = transferEncodingValue.indexOf(',');
>              String encodingName = null;
>              while (commaPos != -1) {
> -                encodingName = transferEncodingValue.substring(
> -                        startPos, 
> commaPos).toLowerCase(Locale.ENGLISH).trim();
> +                encodingName = transferEncodingValue.substring(startPos, 
> commaPos);

The new code needs "trim()" in the above line.

Conversion to lowercase can be done once, but trimming must be done
for each encodingName in the loop there.

[quote]
   #rule
      A construct "#" is defined, similar to "*", for defining lists of
      elements. The full form is "<n>#<m>element" indicating at least
      <n> and at most <m> elements, each separated by one or more commas
      (",") and OPTIONAL linear white space (LWS). This makes the usual
      form of lists very easy; a rule such as
         ( *LWS element *( *LWS "," *LWS element ))
[/quote]

Thus LWS is allowed between list elements.

Transfer-Encoding       = "Transfer-Encoding" ":" 1#transfer-coding


>                  addInputFilter(inputFilters, encodingName);
>                  startPos = commaPos + 1;
>                  commaPos = transferEncodingValue.indexOf(',', startPos);
>              }
> -            encodingName = transferEncodingValue.substring(
> -                    startPos).toLowerCase(Locale.ENGLISH).trim();
> +            encodingName = transferEncodingValue.substring(startPos);
>              addInputFilter(inputFilters, encodingName);
>          }
>

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

Reply via email to