This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/10.1.x by this push: new 7d19629368 Refactor. No functional changed. 7d19629368 is described below commit 7d19629368598c95ecd873393976da8b15f8c0e9 Author: Mark Thomas <ma...@apache.org> AuthorDate: Fri Dec 13 16:38:16 2024 +0000 Refactor. No functional changed. A couple more lines of code but slightly simpler and more aligned with description in RFC 9110. --- .../apache/catalina/servlets/DefaultServlet.java | 46 +++++++++++----------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/java/org/apache/catalina/servlets/DefaultServlet.java b/java/org/apache/catalina/servlets/DefaultServlet.java index 2a8b132a3c..7601348483 100644 --- a/java/org/apache/catalina/servlets/DefaultServlet.java +++ b/java/org/apache/catalina/servlets/DefaultServlet.java @@ -756,10 +756,25 @@ public class DefaultServlet extends HttpServlet { */ protected boolean checkIfHeaders(HttpServletRequest request, HttpServletResponse response, WebResource resource) throws IOException { - return checkIfMatch(request, response, resource) - && checkIfUnmodifiedSince(request, response, resource) - && checkIfNoneMatch(request, response, resource) - && checkIfModifiedSince(request, response, resource); + if (request.getHeader("If-Match") != null) { + if (!checkIfMatch(request, response, resource)) { + return false; + } + } else if (request.getHeader("If-Unmodified-Since") != null) { + if (!checkIfUnmodifiedSince(request, response, resource)) { + return false; + } + } + if (request.getHeader("If-None-Match") != null) { + if (!checkIfNoneMatch(request, response, resource)) { + return false; + } + } else if (request.getHeader("If-Modified-Since") != null) { + if (!checkIfModifiedSince(request, response, resource)) { + return false; + } + } + return true; } @@ -2163,9 +2178,6 @@ public class DefaultServlet extends HttpServlet { boolean conditionSatisfied = false; Enumeration<String> headerValues = request.getHeaders("If-Match"); - if (!headerValues.hasMoreElements()) { - return true; - } String resourceETag = generateETag(resource); boolean hasAsteriskValue = false;// check existence of special header value '*' @@ -2230,16 +2242,13 @@ public class DefaultServlet extends HttpServlet { } long resourceLastModified = resource.getLastModified(); - if (resourceLastModified <= -1 || request.getHeader("If-None-Match") != null) { + if (resourceLastModified <= -1) { // MUST ignore if the resource does not have a modification date available. - // MUST ignore if the request contains an If-None-Match header field return true; } + + // Must be at least one header for this method to be called Enumeration<String> headerEnum = request.getHeaders("If-Modified-Since"); - if (!headerEnum.hasMoreElements()) { - // If-Modified-Since is not present - return true; - } headerEnum.nextElement(); if (headerEnum.hasMoreElements()) { // If-Modified-Since is a list of dates @@ -2281,9 +2290,6 @@ public class DefaultServlet extends HttpServlet { String resourceETag = generateETag(resource); Enumeration<String> headerValues = request.getHeaders("If-None-Match"); - if (!headerValues.hasMoreElements()) { - return true; - } boolean hasAsteriskValue = false;// check existence of special header value '*' boolean conditionSatisfied = true; int headerCount = 0; @@ -2368,16 +2374,12 @@ public class DefaultServlet extends HttpServlet { WebResource resource) throws IOException { long resourceLastModified = resource.getLastModified(); - if (resourceLastModified <= -1 || request.getHeader("If-Match") != null) { + if (resourceLastModified <= -1) { // MUST ignore if the resource does not have a modification date available. - // MUST ignore if the request contains an If-Match header field return true; } + // Must be at least one header for this method to be called Enumeration<String> headerEnum = request.getHeaders("If-Unmodified-Since"); - if (!headerEnum.hasMoreElements()) { - // If-Unmodified-Since is not present - return true; - } headerEnum.nextElement(); if (headerEnum.hasMoreElements()) { // If-Unmodified-Since is a list of dates --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org