Author: jochen Date: Fri Aug 4 14:24:30 2006 New Revision: 428889 URL: http://svn.apache.org/viewvc?rev=428889&view=rev Log: Eliminated the limitation of a maximum size for a single header line. (The total size of all headers is already limited, so there's no need for another limit.) PR: FILEUPLOAD-108 Submitted-by: Amichai Rothman, [EMAIL PROTECTED]
Modified: jakarta/commons/proper/fileupload/trunk/.classpath jakarta/commons/proper/fileupload/trunk/.project jakarta/commons/proper/fileupload/trunk/pom.xml jakarta/commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java jakarta/commons/proper/fileupload/trunk/xdocs/changes.xml Modified: jakarta/commons/proper/fileupload/trunk/.classpath URL: http://svn.apache.org/viewvc/jakarta/commons/proper/fileupload/trunk/.classpath?rev=428889&r1=428888&r2=428889&view=diff ============================================================================== --- jakarta/commons/proper/fileupload/trunk/.classpath (original) +++ jakarta/commons/proper/fileupload/trunk/.classpath Fri Aug 4 14:24:30 2006 @@ -1,20 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> - <classpath> - <classpathentry excluding="" kind="src" path="src/java"> - </classpathentry> - <classpathentry output="target/test-classes" kind="src" path="src/test"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/junit/jars/junit-3.8.1.jar"> - </classpathentry> - <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/commons-io/jars/commons-io-1.1.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/javax.servlet/jars/servlet-api-2.3.jar"> - </classpathentry> - <classpathentry kind="var" path="MAVEN_REPO/javax.portlet/jars/portlet-api-1.0.jar"> - </classpathentry> - <classpathentry kind="output" path="target/classes"> - </classpathentry> -</classpath> \ No newline at end of file + <classpathentry path="src/java" kind="src"/> + <classpathentry path="src/test" kind="src"/> + <classpathentry path="org.eclipse.jdt.launching.JRE_CONTAINER" kind="con"/> + <classpathentry path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER" kind="con"/> + <classpathentry path="target/classes" kind="output"/> +</classpath> Modified: jakarta/commons/proper/fileupload/trunk/.project URL: http://svn.apache.org/viewvc/jakarta/commons/proper/fileupload/trunk/.project?rev=428889&r1=428888&r2=428889&view=diff ============================================================================== --- jakarta/commons/proper/fileupload/trunk/.project (original) +++ jakarta/commons/proper/fileupload/trunk/.project Fri Aug 4 14:24:30 2006 @@ -1,18 +1,23 @@ <?xml version="1.0" encoding="UTF-8"?> - <projectDescription> - <name>commons-fileupload</name> - <comment>The FileUpload component provides a simple yet flexible means of adding support for multipart file upload functionality to servlets and web applications.</comment> - <projects> - </projects> - <buildSpec> - <buildCommand> - <name>org.eclipse.jdt.core.javabuilder</name> - <arguments> - </arguments> - </buildCommand> - </buildSpec> - <natures> - <nature>org.eclipse.jdt.core.javanature</nature> - </natures> + <name>commons-fileupload</name> + <comment>The FileUpload component provides a simple yet flexible means of adding support for multipart file upload functionality to servlets and web applications.</comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.maven.ide.eclipse.maven2Builder</name> + <arguments> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.maven.ide.eclipse.maven2Nature</nature> + </natures> </projectDescription> Modified: jakarta/commons/proper/fileupload/trunk/pom.xml URL: http://svn.apache.org/viewvc/jakarta/commons/proper/fileupload/trunk/pom.xml?rev=428889&r1=428888&r2=428889&view=diff ============================================================================== --- jakarta/commons/proper/fileupload/trunk/pom.xml (original) +++ jakarta/commons/proper/fileupload/trunk/pom.xml Fri Aug 4 14:24:30 2006 @@ -91,6 +91,13 @@ </developer> </developers> + <contributors> + <contributor> + <name>Amichai Rothman</name> + <email>[EMAIL PROTECTED]</email> + </contributor> + </contributors> + <licenses> <license> <name>The Apache Software License, Version 2.0</name> Modified: jakarta/commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java?rev=428889&r1=428888&r2=428889&view=diff ============================================================================== --- jakarta/commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java (original) +++ jakarta/commons/proper/fileupload/trunk/src/java/org/apache/commons/fileupload/FileUploadBase.java Fri Aug 4 14:24:30 2006 @@ -154,13 +154,6 @@ public static final String MULTIPART_MIXED = "multipart/mixed"; - /** - * The maximum length of a single header line that will be parsed - * (1024 bytes). - */ - public static final int MAX_HEADER_SIZE = 1024; - - // ----------------------------------------------------------- Data members @@ -433,46 +426,38 @@ */ protected Map /* String, String */ parseHeaders(String headerPart) { Map headers = new HashMap(); - char[] buffer = new char[MAX_HEADER_SIZE]; - boolean done = false; - int j = 0; - int i; - String header, headerName, headerValue; - try { - while (!done) { - i = 0; - // Copy a single line of characters into the buffer, - // omitting trailing CRLF. - while (i < 2 - || buffer[i - 2] != '\r' || buffer[i - 1] != '\n') { - buffer[i++] = headerPart.charAt(j++); + int start = 0; + int end = 0; + for(;;) { + int offset = headerPart.indexOf('\r', end); + if (offset == -1 || offset+1 >= headerPart.length()) { + throw new IllegalStateException("Expected headers to be terminated by an empty line."); + } + if (headerPart.charAt(offset+1) != '\n') { + end = offset+1; + } else if (offset == start) { + break; + } else { + String header = headerPart.substring(start, offset); + start = end = offset+2; + if (header.indexOf(':') == -1) { + // This header line is malformed, skip it. + continue; } - header = new String(buffer, 0, i - 2); - if (header.equals("")) { - done = true; + String headerName = header.substring(0, header.indexOf(':')) + .trim().toLowerCase(); + String headerValue = + header.substring(header.indexOf(':') + 1).trim(); + if (getHeader(headers, headerName) != null) { + // More that one heder of that name exists, + // append to the list. + headers.put(headerName, + getHeader(headers, headerName) + ',' + + headerValue); } else { - if (header.indexOf(':') == -1) { - // This header line is malformed, skip it. - continue; - } - headerName = header.substring(0, header.indexOf(':')) - .trim().toLowerCase(); - headerValue = - header.substring(header.indexOf(':') + 1).trim(); - if (getHeader(headers, headerName) != null) { - // More that one heder of that name exists, - // append to the list. - headers.put(headerName, - getHeader(headers, headerName) + ',' - + headerValue); - } else { - headers.put(headerName, headerValue); - } + headers.put(headerName, headerValue); } - } - } catch (IndexOutOfBoundsException e) { - // Headers were malformed. continue with all that was - // parsed. + } } return headers; } Modified: jakarta/commons/proper/fileupload/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jakarta/commons/proper/fileupload/trunk/xdocs/changes.xml?rev=428889&r1=428888&r2=428889&view=diff ============================================================================== --- jakarta/commons/proper/fileupload/trunk/xdocs/changes.xml (original) +++ jakarta/commons/proper/fileupload/trunk/xdocs/changes.xml Fri Aug 4 14:24:30 2006 @@ -45,13 +45,21 @@ <action dev="jochen" type="update" issue="FILEUPLOAD-109"> Eliminated duplicate code. </action> + <action dev="jochen" type="add" issue="FILEUPLOAD-112"> Added a streaming API. </action> + <action dev="jochen" type="fix" issue="FILEUPLOAD-93"> Eliminated the necessity of a content-length header. </action> + <action dev="jochen" type="fix" issue="FILEUPLOAD-108" + due-to="Amichai Rothman" due-to-email="[EMAIL PROTECTED]"> + Eliminated the limitation of a maximum size for a single + header line. (The total size of all headers is already + limited, so there's no need for another limit.) + </action> </release> <release version="1.1.1" date="2006-06-08" description="Bugfix release"> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]