This is an automated email from the ASF dual-hosted git repository.
remm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new 65f96827c5 Simplify
65f96827c5 is described below
commit 65f96827c5feefcc7b8e69c3e952529aaf880260
Author: remm <[email protected]>
AuthorDate: Wed Dec 11 17:25:58 2024 +0100
Simplify
---
.../apache/catalina/servlets/DefaultServlet.java | 73 ++--------------------
1 file changed, 6 insertions(+), 67 deletions(-)
diff --git a/java/org/apache/catalina/servlets/DefaultServlet.java
b/java/org/apache/catalina/servlets/DefaultServlet.java
index 3eb08428d1..260a767d12 100644
--- a/java/org/apache/catalina/servlets/DefaultServlet.java
+++ b/java/org/apache/catalina/servlets/DefaultServlet.java
@@ -726,72 +726,8 @@ public class DefaultServlet extends HttpServlet {
*/
protected boolean checkIfHeaders(HttpServletRequest request,
HttpServletResponse response, WebResource resource)
throws IOException {
- String ifNoneMatchHeader = request.getHeader("If-None-Match");
-
- // RFC9110 #13.3.2 defines preconditions evaluation order
- int next = 1;
- while (true) {
- switch (next) {
- case 1:
- if (request.getHeader("If-Match") != null) {
- if (checkIfMatch(request, response, resource)) {
- next = 3;
- } else {
- return false;
- }
- } else {
- next = 2;
- }
- break;
- case 2:
- if (request.getHeader("If-Unmodified-Since") != null) {
- if (checkIfUnmodifiedSince(request, response,
resource)) {
- next = 3;
- } else {
- return false;
- }
- } else {
- next = 3;
- }
- break;
- case 3:
- if (ifNoneMatchHeader != null) {
- if (checkIfNoneMatch(request, response, resource)) {
- next = 5;
- } else {
- return false;
- }
- } else {
- next = 4;
- }
- break;
- case 4:
- if (("GET".equals(request.getMethod()) ||
"HEAD".equals(request.getMethod())) &&
- ifNoneMatchHeader == null &&
request.getHeader("If-Modified-Since") != null) {
- if (checkIfModifiedSince(request, response, resource))
{
- next = 5;
- } else {
- return false;
- }
- } else {
- next = 5;
- }
- break;
- case 5:
- if ("GET".equals(request.getMethod()) &&
request.getHeader("If-Range") != null &&
- request.getHeader("Range") != null) {
- if (checkIfRange(request, response, resource) &&
determineRangeRequestsApplicable(resource)) {
- // Partial content, precondition passed
- return true;
- } else {
- // ignore the Range header field
- return true;
- }
- } else {
- return true;
- }
- }
- }
+ return checkIfMatch(request, response, resource) &&
checkIfModifiedSince(request, response, resource) &&
+ checkIfNoneMatch(request, response, resource) &&
checkIfUnmodifiedSince(request, response, resource);
}
@@ -2197,6 +2133,10 @@ public class DefaultServlet extends HttpServlet {
protected boolean checkIfModifiedSince(HttpServletRequest request,
HttpServletResponse response,
WebResource resource) {
+ String method = request.getMethod();
+ if (!"GET".equals(method) && !"HEAD".equals(method)) {
+ return true;
+ }
long resourceLastModified = resource.getLastModified();
try {
@@ -2210,7 +2150,6 @@ public class DefaultServlet extends HttpServlet {
// specified by the client. This is not an error case.
response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
response.setHeader("ETag", generateETag(resource));
-
return false;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]