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
The following commit(s) were added to refs/heads/master by this push: new 519251c Fix BZ 64593. Delay 404 when Context is null. 519251c is described below commit 519251cbeb4488f47da36e91fe436556312af4a6 Author: Mark Thomas <ma...@apache.org> AuthorDate: Mon Jul 13 16:46:23 2020 +0100 Fix BZ 64593. Delay 404 when Context is null. This gives the rewrite valve an opportunity to rewrite the request. --- java/org/apache/catalina/connector/CoyoteAdapter.java | 8 ++++---- java/org/apache/catalina/core/StandardEngineValve.java | 6 +++++- java/org/apache/catalina/core/StandardHostValve.java | 4 ++++ webapps/docs/changelog.xml | 5 +++++ 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/java/org/apache/catalina/connector/CoyoteAdapter.java b/java/org/apache/catalina/connector/CoyoteAdapter.java index ab113a7..6249e35 100644 --- a/java/org/apache/catalina/connector/CoyoteAdapter.java +++ b/java/org/apache/catalina/connector/CoyoteAdapter.java @@ -692,11 +692,11 @@ public class CoyoteAdapter implements Adapter { // because no ROOT context has been deployed or the URI was invalid // so no context could be mapped. if (request.getContext() == null) { - // Don't overwrite an existing error - if (!response.isError()) { - response.sendError(404); - } // Allow processing to continue. + // If present, the rewrite Valve may rewrite this to a valid + // request. + // The StandardEngineValve will handle the case of a missing + // Host and the StandardHostValve the case of a missing Context. // If present, the error reporting valve will provide a response // body. return true; diff --git a/java/org/apache/catalina/core/StandardEngineValve.java b/java/org/apache/catalina/core/StandardEngineValve.java index 4b5399c..c9e83b3 100644 --- a/java/org/apache/catalina/core/StandardEngineValve.java +++ b/java/org/apache/catalina/core/StandardEngineValve.java @@ -63,7 +63,11 @@ final class StandardEngineValve extends ValveBase { Host host = request.getHost(); if (host == null) { // HTTP 0.9 or HTTP 1.0 request without a host when no default host - // is defined. This is handled by the CoyoteAdapter. + // is defined. + // Don't overwrite an existing error + if (!response.isError()) { + response.sendError(404); + } return; } if (request.isAsyncSupported()) { diff --git a/java/org/apache/catalina/core/StandardHostValve.java b/java/org/apache/catalina/core/StandardHostValve.java index 3be0026..c4b75c1 100644 --- a/java/org/apache/catalina/core/StandardHostValve.java +++ b/java/org/apache/catalina/core/StandardHostValve.java @@ -94,6 +94,10 @@ final class StandardHostValve extends ValveBase { // Select the Context to be used for this Request Context context = request.getContext(); if (context == null) { + // Don't overwrite an existing error + if (!response.isError()) { + response.sendError(404); + } return; } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 0daeafd..42783b5 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -52,6 +52,11 @@ prevent a potential exception when running under a security manager. Patch provided by Johnathan Gilday. (markt) </fix> + <fix> + <bug>64593</bug>: If a request is not matched to a Context, delay + issuing the 404 response to give the rewrite valve, if configured, an + opportunity to rewrite the request. (remm/markt) + </fix> </changelog> </subsection> <subsection name="Coyote"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org