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

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


The following commit(s) were added to refs/heads/8.5.x by this push:
     new bf8a434cab Fix BZ 66068. Persist changes made by RemoteIpValve for 
async requests
bf8a434cab is described below

commit bf8a434cab67a45fa5e5c3a584753f0026b259d3
Author: Mark Thomas <ma...@apache.org>
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 7908a14682..234fdadb3b 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -120,6 +120,11 @@
         <code>clearReferencesObjectStreamClassCaches</code> when running on a
         JRE that includes a fix for the underlying memory leak. (markt)
       </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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to