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