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