From: markt Date: Fri, 10 Dec 2010 10:11:38 +0000 (+0000) Subject: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50413 X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=7d0dc36b0f03228b7e0c0c510dcd28c253747c90;p=tomcat7.0 Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=50413 Ensure 304s are not returned when using static files as error pages git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1044266 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/servlets/DefaultServlet.java b/java/org/apache/catalina/servlets/DefaultServlet.java index bc0d7ed65..cddefcd91 100644 --- a/java/org/apache/catalina/servlets/DefaultServlet.java +++ b/java/org/apache/catalina/servlets/DefaultServlet.java @@ -792,6 +792,9 @@ public class DefaultServlet } } + boolean isError = + response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST; + // Check if the conditions specified in the optional If headers are // satisfied. if (cacheEntry.context == null) { @@ -799,8 +802,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; } @@ -828,21 +831,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", cacheEntry.attributes.getETag()); + + // Last-Modified header + response.setHeader("Last-Modified", + cacheEntry.attributes.getLastModifiedHttp()); } - // Parse range specifier - ranges = parseRange(request, response, cacheEntry.attributes); - - // ETag header - response.setHeader("ETag", cacheEntry.attributes.getETag()); - - // 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 diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 4dbeeb14f..e483365ae 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -122,6 +122,10 @@ Store associated with a PersistentManager. (markt) + + 50413: Ensure 304 responses are not returned when using + static files as error pages. (markt) +