2014-06-13 15:37 GMT+04:00 <[email protected]>:
> 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: [email protected]
For additional commands, e-mail: [email protected]