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]

Reply via email to