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

markt 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 c52e7f9d83 Fix BZ 66068. Persist changes made by RemoteIpValve for 
async requests
c52e7f9d83 is described below

commit c52e7f9d830159d9933c2e301b58b4174c7dfcd3
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 e2cd6d396a..7320acea3e 100644
--- a/java/org/apache/catalina/valves/RemoteIpValve.java
+++ b/java/org/apache/catalina/valves/RemoteIpValve.java
@@ -740,28 +740,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 81da073f1b..c2dc7f7e38 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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to