This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 9.0.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push: new c03ef13045 Refactor. No functional changed. c03ef13045 is described below commit c03ef130458220fd224c9dd6a09d1a240f6335d3 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 c3a95bc4af..1bc645d150 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; } @@ -2227,9 +2242,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 '*' @@ -2294,16 +2306,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 @@ -2345,9 +2354,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; @@ -2432,16 +2438,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