You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2007/03/01 01:26:13 UTC
svn commit: r513079 - in /tomcat/connectors/trunk:
coyote/src/java/org/apache/coyote/Request.java
util/java/org/apache/tomcat/util/http/MimeHeaders.java
Author: markt
Date: Wed Feb 28 16:26:12 2007
New Revision: 513079
URL: http://svn.apache.org/viewvc?view=rev&rev=513079
Log:
As per RFC2616, requests with multiple content-length headers are invalid.
Modified:
tomcat/connectors/trunk/coyote/src/java/org/apache/coyote/Request.java
tomcat/connectors/trunk/util/java/org/apache/tomcat/util/http/MimeHeaders.java
Modified: tomcat/connectors/trunk/coyote/src/java/org/apache/coyote/Request.java
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/coyote/src/java/org/apache/coyote/Request.java?view=diff&rev=513079&r1=513078&r2=513079
==============================================================================
--- tomcat/connectors/trunk/coyote/src/java/org/apache/coyote/Request.java (original)
+++ tomcat/connectors/trunk/coyote/src/java/org/apache/coyote/Request.java Wed Feb 28 16:26:12 2007
@@ -294,7 +294,7 @@
public long getContentLengthLong() {
if( contentLength > -1 ) return contentLength;
- MessageBytes clB = headers.getValue("content-length");
+ MessageBytes clB = headers.getUniqueValue("content-length");
contentLength = (clB == null || clB.isNull()) ? -1 : clB.getLong();
return contentLength;
Modified: tomcat/connectors/trunk/util/java/org/apache/tomcat/util/http/MimeHeaders.java
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/util/java/org/apache/tomcat/util/http/MimeHeaders.java?view=diff&rev=513079&r1=513078&r2=513079
==============================================================================
--- tomcat/connectors/trunk/util/java/org/apache/tomcat/util/http/MimeHeaders.java (original)
+++ tomcat/connectors/trunk/util/java/org/apache/tomcat/util/http/MimeHeaders.java Wed Feb 28 16:26:12 2007
@@ -293,6 +293,25 @@
return null;
}
+ /**
+ * Finds and returns a unique header field with the given name. If no such
+ * field exists, null is returned. If the specified header field is not
+ * unique then an {@link IllegalArgumentException} is thrown.
+ */
+ public MessageBytes getUniqueValue(String name) {
+ MessageBytes result = null;
+ for (int i = 0; i < count; i++) {
+ if (headers[i].getName().equalsIgnoreCase(name)) {
+ if (result == null) {
+ result = headers[i].getValue();
+ } else {
+ throw new IllegalArgumentException();
+ }
+ }
+ }
+ return result;
+ }
+
// bad shortcut - it'll convert to string ( too early probably,
// encoding is guessed very late )
public String getHeader(String name) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org