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

Reply via email to