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 437b060c96 Fix BZ 66068. Persist changes made by RemoteIpValve for
async requests
437b060c96 is described below
commit 437b060c9661c293e36d5e3eba2738953920802e
Author: Mark Thomas <[email protected]>
AuthorDate: Thu May 26 14:21:03 2022 +0100
Fix BZ 66068. Persist changes made by RemoteIpValve for async requests
---
java/org/apache/catalina/valves/RemoteIpValve.java | 44 +++++++++++-----------
webapps/docs/changelog.xml | 5 +++
2 files changed, 28 insertions(+), 21 deletions(-)
diff --git a/java/org/apache/catalina/valves/RemoteIpValve.java
b/java/org/apache/catalina/valves/RemoteIpValve.java
index 8f85900398..45b99695ec 100644
--- a/java/org/apache/catalina/valves/RemoteIpValve.java
+++ b/java/org/apache/catalina/valves/RemoteIpValve.java
@@ -768,28 +768,30 @@ public class RemoteIpValve extends ValveBase {
try {
getNext().invoke(request, response);
} finally {
- request.setRemoteAddr(originalRemoteAddr);
- request.setRemoteHost(originalRemoteHost);
- request.setSecure(originalSecure);
- request.getCoyoteRequest().scheme().setString(originalScheme);
-
request.getCoyoteRequest().serverName().setString(originalServerName);
- if (isChangeLocalName()) {
-
request.getCoyoteRequest().localName().setString(originalLocalName);
- }
- request.setServerPort(originalServerPort);
- request.setLocalPort(originalLocalPort);
-
- MimeHeaders headers = request.getCoyoteRequest().getMimeHeaders();
- if (originalProxiesHeader == null ||
originalProxiesHeader.length() == 0) {
- headers.removeHeader(proxiesHeader);
- } else {
-
headers.setValue(proxiesHeader).setString(originalProxiesHeader);
- }
+ if (!request.isAsync()) {
+ request.setRemoteAddr(originalRemoteAddr);
+ request.setRemoteHost(originalRemoteHost);
+ request.setSecure(originalSecure);
+ request.getCoyoteRequest().scheme().setString(originalScheme);
+
request.getCoyoteRequest().serverName().setString(originalServerName);
+ if (isChangeLocalName()) {
+
request.getCoyoteRequest().localName().setString(originalLocalName);
+ }
+ request.setServerPort(originalServerPort);
+ request.setLocalPort(originalLocalPort);
+
+ MimeHeaders headers =
request.getCoyoteRequest().getMimeHeaders();
+ if (originalProxiesHeader == null ||
originalProxiesHeader.length() == 0) {
+ headers.removeHeader(proxiesHeader);
+ } else {
+
headers.setValue(proxiesHeader).setString(originalProxiesHeader);
+ }
- if (originalRemoteIpHeader == null ||
originalRemoteIpHeader.length() == 0) {
- headers.removeHeader(remoteIpHeader);
- } else {
-
headers.setValue(remoteIpHeader).setString(originalRemoteIpHeader);
+ if (originalRemoteIpHeader == null ||
originalRemoteIpHeader.length() == 0) {
+ headers.removeHeader(remoteIpHeader);
+ } else {
+
headers.setValue(remoteIpHeader).setString(originalRemoteIpHeader);
+ }
}
}
}
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 0f63acc72c..5cce3330fb 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -124,6 +124,11 @@
<pr>515</pr>: Avoid deadlock on startup with some utility executor
configurations. Submitted by Han Li. (remm)
</fix>
+ <fix>
+ <bug>66068</bug>: Ensure that the changes made to a request by the
+ <code>RemoteIPValve</code> persist after the request is put into
+ asynchronous mode. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]