Author: markt
Date: Tue Jan 10 15:06:22 2006
New Revision: 367826

URL: http://svn.apache.org/viewcvs?rev=367826&view=rev
Log:
Alternative patch for bug 29214 based on Remy's comments

Modified:
    
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Response.java
    tomcat/container/tc5.5.x/webapps/docs/changelog.xml

Modified: 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Response.java
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Response.java?rev=367826&r1=367825&r2=367826&view=diff
==============================================================================
--- 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Response.java
 (original)
+++ 
tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/connector/Response.java
 Tue Jan 10 15:06:22 2006
@@ -219,9 +219,9 @@
     private boolean isCharacterEncodingSet = false;
     
     /**
-     * The contextType flag
+     * The contentLength flag
      */    
-    private boolean isContentTypeSet = false;
+    private boolean isContentLengthSet = false;
 
     
     /**
@@ -275,7 +275,7 @@
         appCommitted = false;
         included = false;
         error = false;
-        isContentTypeSet = false;
+        isContentLengthSet = false;
         isCharacterEncodingSet = false;
         
         cookies.clear();
@@ -651,6 +651,7 @@
 
         coyoteResponse.reset();
         outputBuffer.reset();
+        isContentLengthSet = false;
     }
 
 
@@ -708,6 +709,8 @@
             return;
         
         coyoteResponse.setContentLength(length);
+        
+        isContentLengthSet = true;
 
     }
 
@@ -744,7 +747,8 @@
             if (index != -1) {
                 int len = type.length();
                 index++;
-                while (index < len && Character.isSpace(type.charAt(index))) {
+                while (index < len
+                        && Character.isWhitespace(type.charAt(index))) {
                     index++;
                 }
                 if (index+7 < len
@@ -760,8 +764,6 @@
                 }
             }
         }
-
-        isContentTypeSet = true;    
     }
 
 
@@ -1011,6 +1013,12 @@
 
         coyoteResponse.addHeader(name, value);
 
+        char cc=name.charAt(0);
+        if(cc=='C' || cc=='c') {
+            if(name.equalsIgnoreCase("Content-Length")) {
+                isContentLengthSet = true;
+            }
+        }
     }
 
 
@@ -1040,6 +1048,20 @@
      * @param name Name of the header to check
      */
     public boolean containsHeader(String name) {
+        // Need special handling for Content-Type and Content-Length due to
+        // special handling of these in coyoteResponse
+        char cc=name.charAt(0);
+        if(cc=='C' || cc=='c') {
+            if(name.equalsIgnoreCase("Content-Type")) {
+                // Will return null if this has not been set
+                return (coyoteResponse.getContentType() != null);
+            }
+            if(name.equalsIgnoreCase("Content-Length")) {
+                // Can't use null test since this header is an int
+                return isContentLengthSet;
+            }
+        }
+
         return coyoteResponse.containsHeader(name);
     }
 
@@ -1268,6 +1290,13 @@
             return;
 
         coyoteResponse.setHeader(name, value);
+
+        char cc=name.charAt(0);
+        if(cc=='C' || cc=='c') {
+            if(name.equalsIgnoreCase("Content-Length")) {
+                isContentLengthSet = true;
+            }
+        }
 
     }
 

Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?rev=367826&r1=367825&r2=367826&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original)
+++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Tue Jan 10 15:06:22 2006
@@ -25,11 +25,16 @@
   <subsection name="Catalina">
     <changelog>
       <fix>
-        <bug>23950</bug>: Context.listBindings() should return objects not 
references. (markt)
+        <bug>23950</bug>: Context.listBindings() should return objects not
+        references. (markt)
       </fix>
       <fix>
         <bug>38124</bug>: Add support for Windows 20xx when reading environment
         variables in CGIServlet. (markt)
+      </fix>
+      <fix>
+        <bug>29214</bug>: response.containsHeader() now returns the correct
+        value for Content-Type and Content-Length headers. (markt)
       </fix>
     </changelog>
   </subsection>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to