You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2019/07/01 11:12:25 UTC

[tomcat] 02/02: If-Range must use exact match on dates (allowing for resolution)

This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git

commit 92585d37b9b5a2ee5b88c365032db4b6e1be1452
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Mon Jul 1 11:27:35 2019 +0100

    If-Range must use exact match on dates (allowing for resolution)
---
 java/org/apache/catalina/servlets/DefaultServlet.java | 13 +++++--------
 webapps/docs/changelog.xml                            |  4 ++++
 2 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/java/org/apache/catalina/servlets/DefaultServlet.java b/java/org/apache/catalina/servlets/DefaultServlet.java
index 261bd58..d5b9ab0 100644
--- a/java/org/apache/catalina/servlets/DefaultServlet.java
+++ b/java/org/apache/catalina/servlets/DefaultServlet.java
@@ -1460,22 +1460,19 @@ public class DefaultServlet extends HttpServlet {
             long lastModified = resource.getLastModified();
 
             if (headerValueTime == (-1L)) {
-
                 // If the ETag the client gave does not match the entity
                 // etag, then the entire entity is returned.
-                if (!eTag.equals(headerValue.trim()))
+                if (!eTag.equals(headerValue.trim())) {
                     return FULL;
-
+                }
             } else {
-
-                // If the timestamp of the entity the client got is older than
+                // If the timestamp of the entity the client got differs from
                 // the last modification date of the entity, the entire entity
                 // is returned.
-                if (lastModified > (headerValueTime + 1000))
+                if (Math.abs(lastModified  -headerValueTime) > 1000) {
                     return FULL;
-
+                }
             }
-
         }
 
         long fileLength = resource.getContentLength();
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index f6c6d7b..3c2105c 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -55,6 +55,10 @@
         be ignored rather than triggering a 416 response. Based on a pull
         request by zhanhb. (markt)
       </fix>
+      <fix>
+        When comparing a date from a <code>If-Range</code> header, an exact
+        match is required. Based on a pull request by zhanhb. (markt)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Coyote">


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org