Author: markt
Date: Fri Aug 12 07:46:37 2016
New Revision: 1756094

URL: http://svn.apache.org/viewvc?rev=1756094&view=rev
Log:
Complete alignment of request attribute actions.

Modified:
    tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java
    tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
    tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java

Modified: tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java?rev=1756094&r1=1756093&r2=1756094&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/ajp/AjpProcessor.java Fri Aug 12 
07:46:37 2016
@@ -423,44 +423,37 @@ public class AjpProcessor extends Abstra
 
         // Request attribute support
         case REQ_HOST_ADDR_ATTRIBUTE: {
-            // NO-OP
-            // Automatically populated during prepareRequest()
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
+                request.remoteAddr().setString(socketWrapper.getRemoteAddr());
+            }
             break;
         }
         case REQ_HOST_ATTRIBUTE: {
-            // Get remote host name using a DNS resolution
-            if (request.remoteHost().isNull()) {
-                try {
-                    request.remoteHost().setString(InetAddress.getByName
-                            (request.remoteAddr().toString()).getHostName());
-                } catch (IOException iex) {
-                    // Ignore
-                }
-            }
+            populateRequestAttributeRemoteHost();
             break;
         }
         case REQ_LOCALPORT_ATTRIBUTE: {
-            // NO-OP
-            // Automatically populated during prepareRequest()
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
+                request.setLocalPort(socketWrapper.getLocalPort());
+            }
             break;
         }
         case REQ_LOCAL_ADDR_ATTRIBUTE: {
-            // Automatically populated during prepareRequest() when using
-            // modern AJP forwarder, otherwise copy from local name
-            if (request.localAddr().isNull()) {
-                request.localAddr().setString(request.localName().toString());
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
+                request.localAddr().setString(socketWrapper.getLocalAddr());
             }
             break;
         }
         case REQ_LOCAL_NAME_ATTRIBUTE: {
-            // NO-OP
-            // Automatically populated during prepareRequest()
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
+                request.localName().setString(socketWrapper.getLocalName());
+            }
             break;
         }
         case REQ_REMOTEPORT_ATTRIBUTE: {
-            // NO-OP
-            // Automatically populated during prepareRequest() when using
-            // modern AJP forwarder, otherwise not available
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
+                request.setRemotePort(socketWrapper.getRemotePort());
+            }
             break;
         }
 
@@ -1484,6 +1477,26 @@ public class AjpProcessor extends Abstra
     }
     
     
+    private boolean getPopulateRequestAttributesFromSocket() {
+        // NO-OPs the attribute requests since they are pre-populated when
+        // parsing the first AJP message.
+        return false;
+    }
+
+    
+    private void populateRequestAttributeRemoteHost() {
+        // Get remote host name using a DNS resolution
+        if (request.remoteHost().isNull()) {
+            try {
+                request.remoteHost().setString(InetAddress.getByName
+                        (request.remoteAddr().toString()).getHostName());
+            } catch (IOException iex) {
+                // Ignore
+            }
+        }
+    }
+    
+    
     /**
      * Read at least the specified amount of bytes, and place them
      * in the input buffer. Note that if any data is available to read then 
this

Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java?rev=1756094&r1=1756093&r2=1756094&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Processor.java Fri Aug 12 
07:46:37 2016
@@ -716,37 +716,35 @@ public class Http11Processor extends Abs
 
         // Request attribute support
         case REQ_HOST_ADDR_ATTRIBUTE: {
-            if (socketWrapper != null) {
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
                 request.remoteAddr().setString(socketWrapper.getRemoteAddr());
             }
             break;
         }
         case REQ_HOST_ATTRIBUTE: {
-            if (socketWrapper != null) {
-                request.remoteHost().setString(socketWrapper.getRemoteHost());
-            }
+            populateRequestAttributeRemoteHost();
             break;
         }
         case REQ_LOCALPORT_ATTRIBUTE: {
-            if (socketWrapper != null) {
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
                 request.setLocalPort(socketWrapper.getLocalPort());
             }
             break;
         }
         case REQ_LOCAL_ADDR_ATTRIBUTE: {
-            if (socketWrapper != null) {
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
                 request.localAddr().setString(socketWrapper.getLocalAddr());
             }
             break;
         }
         case REQ_LOCAL_NAME_ATTRIBUTE: {
-            if (socketWrapper != null) {
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
                 request.localName().setString(socketWrapper.getLocalName());
             }
             break;
         }
         case REQ_REMOTEPORT_ATTRIBUTE: {
-            if (socketWrapper != null) {
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
                 request.setRemotePort(socketWrapper.getRemotePort());
             }
             break;
@@ -1815,6 +1813,18 @@ public class Http11Processor extends Abs
     }
     
     
+    private boolean getPopulateRequestAttributesFromSocket() {
+        return true;
+    }
+    
+    
+    private void populateRequestAttributeRemoteHost() {
+        if (getPopulateRequestAttributesFromSocket() && socketWrapper != null) 
{
+            request.remoteHost().setString(socketWrapper.getRemoteHost());
+        }
+    }
+    
+    
     /**
      * Checks to see if the keep-alive loop should be broken, performing any
      * processing (e.g. sendfile handling) that may have an impact on whether

Modified: tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java?rev=1756094&r1=1756093&r2=1756094&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http2/StreamProcessor.java Fri Aug 12 
07:46:37 2016
@@ -170,37 +170,35 @@ public class StreamProcessor extends Abs
 
         // Request attribute support
         case REQ_HOST_ADDR_ATTRIBUTE: {
-            if (socketWrapper != null) {
-                request.remoteAddr().setString(socketWrapper.getRemoteAddr());
-            }
+            populateRequestAttributeRemoteHost();
             break;
         }
         case REQ_HOST_ATTRIBUTE: {
-            if (socketWrapper != null) {
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
                 request.remoteHost().setString(socketWrapper.getRemoteHost());
             }
             break;
         }
         case REQ_LOCALPORT_ATTRIBUTE: {
-            if (socketWrapper != null) {
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
                 request.setLocalPort(socketWrapper.getLocalPort());
             }
             break;
         }
         case REQ_LOCAL_ADDR_ATTRIBUTE: {
-            if (socketWrapper != null) {
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
                 request.localAddr().setString(socketWrapper.getLocalAddr());
             }
             break;
         }
         case REQ_LOCAL_NAME_ATTRIBUTE: {
-            if (socketWrapper != null) {
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
                 request.localName().setString(socketWrapper.getLocalName());
             }
             break;
         }
         case REQ_REMOTEPORT_ATTRIBUTE: {
-            if (socketWrapper != null) {
+            if (getPopulateRequestAttributesFromSocket() && socketWrapper != 
null) {
                 request.setRemotePort(socketWrapper.getRemotePort());
             }
             break;
@@ -433,6 +431,18 @@ public class StreamProcessor extends Abs
     }
     
     
+    private boolean getPopulateRequestAttributesFromSocket() {
+        return true;
+    }
+
+    
+    private void populateRequestAttributeRemoteHost() {
+        if (getPopulateRequestAttributesFromSocket() && socketWrapper != null) 
{
+            request.remoteHost().setString(socketWrapper.getRemoteHost());
+        }
+    }
+    
+    
     @Override
     public void recycle() {
         // StreamProcessor instances are not re-used.



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to