}
}
+ boolean isError =
+ response.getStatus() >= HttpServletResponse.SC_BAD_REQUEST;
+
// Check if the conditions specified in the optional If headers are
// satisfied.
if (cacheEntry.context == null) {
// 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;
}
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