Author: kkolinko
Date: Tue Jan 11 08:01:28 2011
New Revision: 1057513

URL: http://svn.apache.org/viewvc?rev=1057513&view=rev
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50413
Ensure 304s are not returned when using static files as error pages

Additional patch is not applied yet, is left in STATUS.

Modified:
    tomcat/tc5.5.x/trunk/STATUS.txt
    
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
    tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml

Modified: tomcat/tc5.5.x/trunk/STATUS.txt
URL: 
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/STATUS.txt?rev=1057513&r1=1057512&r2=1057513&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/STATUS.txt (original)
+++ tomcat/tc5.5.x/trunk/STATUS.txt Tue Jan 11 08:01:28 2011
@@ -77,21 +77,6 @@ PATCHES PROPOSED TO BACKPORT:
   +1: kkolinko, rjung
   -1:
 
-* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50413
-  Ensure 304s are not returned when using static files as error pages
-  http://people.apache.org/~markt/patches/2011-01-04-bug50413-tc5.patch
-  +1: markt, rjung
-  +1: kkolinko: There is a minor glitch - see 
https://issues.apache.org/bugzilla/show_bug.cgi?id=50413#c6
-       but it can be addressed separately, after applying the patch.
-  -1:
-
-  Additional patch:
-  Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50413#c6
-  http://svn.apache.org/viewvc?rev=1056889&view=rev
-  Serve the error page regardless of "Range" header in the original request.
-  +1: kkolinko
-  -1:
-
 * Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=43960
   Expose available property of StandardWrapper via JMX
   http://people.apache.org/~markt/patches/2010-12-13-bug43960-tc5.patch
@@ -132,3 +117,10 @@ PATCHES PROPOSED TO BACKPORT:
   (markt's patch)
   +1: kkolinko, rjung
   -1:
+
+* Additional patch for bug 50413:
+  Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50413#c6
+  Serve the error page regardless of "Range" header in the original request.
+  http://svn.apache.org/viewvc?rev=1056889&view=rev
+  +1: kkolinko
+  -1:

Modified: 
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java?rev=1057513&r1=1057512&r2=1057513&view=diff
==============================================================================
--- 
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
 (original)
+++ 
tomcat/tc5.5.x/trunk/container/catalina/src/share/org/apache/catalina/servlets/DefaultServlet.java
 Tue Jan 11 08:01:28 2011
@@ -798,6 +798,13 @@ public class DefaultServlet
             }
         }
 
+        boolean isError = false;
+        Integer status =
+            (Integer) request.getAttribute("javax.servlet.error.status_code");
+        if (status != null) {
+            isError = status.intValue() >= HttpServletResponse.SC_BAD_REQUEST;
+        }
+
         // Check if the conditions specified in the optional If headers are
         // satisfied.
         if (cacheEntry.context == null) {
@@ -805,8 +812,8 @@ public class DefaultServlet
             // Checking If headers
             boolean included =
                 (request.getAttribute(Globals.INCLUDE_CONTEXT_PATH_ATTR) != 
null);
-            if (!included
-                && !checkIfHeaders(request, response, cacheEntry.attributes)) {
+            if (!included && !isError &&
+                    !checkIfHeaders(request, response, cacheEntry.attributes)) 
{
                 return;
             }
 
@@ -834,21 +841,23 @@ public class DefaultServlet
             contentType = "text/html;charset=UTF-8";
 
         } else {
-            if (useAcceptRanges) {
-                // Accept ranges header
-                response.setHeader("Accept-Ranges", "bytes");
+            if (!isError) {
+                if (useAcceptRanges) {
+                    // Accept ranges header
+                    response.setHeader("Accept-Ranges", "bytes");
+                }
+    
+                // Parse range specifier
+                ranges = parseRange(request, response, cacheEntry.attributes);
+    
+                // ETag header
+                response.setHeader("ETag", getETag(cacheEntry.attributes));
+    
+                // Last-Modified header
+                response.setHeader("Last-Modified",
+                        cacheEntry.attributes.getLastModifiedHttp());
             }
 
-            // Parse range specifier
-            ranges = parseRange(request, response, cacheEntry.attributes);
-
-            // ETag header
-            response.setHeader("ETag", getETag(cacheEntry.attributes));
-
-            // Last-Modified header
-            response.setHeader("Last-Modified",
-                    cacheEntry.attributes.getLastModifiedHttp());
-
             // Get content length
             contentLength = cacheEntry.attributes.getContentLength();
             // Special case for zero length files, which would cause a

Modified: tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml?rev=1057513&r1=1057512&r2=1057513&view=diff
==============================================================================
--- tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml (original)
+++ tomcat/tc5.5.x/trunk/container/webapps/docs/changelog.xml Tue Jan 11 
08:01:28 2011
@@ -61,6 +61,10 @@
         Patch provided by sebb. (kkolinko)
       </fix>
       <fix>
+        <bug>50413</bug>: Ensure 304s are not returned when using static files
+        as error pages. (markt)
+      </fix>
+      <fix>
         Avoid unnecessary cast in StandardContext. (markt)
       </fix>
     </changelog>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to