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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]