You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/01/29 17:56:31 UTC
svn commit: r1655739 - in /tomcat/trunk/java/org/apache: coyote/http11/
tomcat/util/net/
Author: markt
Date: Thu Jan 29 16:56:30 2015
New Revision: 1655739
URL: http://svn.apache.org/r1655739
Log:
Push obtaining the remote port and local host/address/port down to the SocketWrapper
Modified:
tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java
tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties
tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java
Modified: tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java?rev=1655739&r1=1655738&r2=1655739&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Thu Jan 29 16:56:30 2015
@@ -902,6 +902,38 @@ public abstract class AbstractHttp11Proc
}
break;
}
+ case REQ_REMOTEPORT_ATTRIBUTE: {
+ if (socketWrapper == null) {
+ request.setRemotePort(0);
+ } else {
+ request.setRemotePort(socketWrapper.getRemotePort());
+ }
+ break;
+ }
+ case REQ_LOCAL_NAME_ATTRIBUTE: {
+ if (socketWrapper == null) {
+ request.localName().recycle();
+ } else {
+ request.localName().setString(socketWrapper.getLocalName());
+ }
+ break;
+ }
+ case REQ_LOCAL_ADDR_ATTRIBUTE: {
+ if (socketWrapper == null) {
+ request.localAddr().recycle();
+ } else {
+ request.localAddr().setString(socketWrapper.getLocalAddr());
+ }
+ break;
+ }
+ case REQ_LOCALPORT_ATTRIBUTE: {
+ if (socketWrapper == null) {
+ request.setLocalPort(0);
+ } else {
+ request.setLocalPort(socketWrapper.getLocalPort());
+ }
+ break;
+ }
default: {
actionInternal(actionCode, param);
break;
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java?rev=1655739&r1=1655738&r2=1655739&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Thu Jan 29 16:56:30 2015
@@ -24,10 +24,8 @@ import org.apache.coyote.ActionCode;
import org.apache.coyote.http11.filters.BufferedInputFilter;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
-import org.apache.tomcat.jni.Address;
import org.apache.tomcat.jni.SSL;
import org.apache.tomcat.jni.SSLSocket;
-import org.apache.tomcat.jni.Sockaddr;
import org.apache.tomcat.jni.Socket;
import org.apache.tomcat.util.net.AbstractEndpoint;
import org.apache.tomcat.util.net.AprEndpoint;
@@ -109,72 +107,6 @@ public class Http11AprProcessor extends
long socketRef = socketWrapper.getSocket().longValue();
switch (actionCode) {
- case REQ_LOCAL_NAME_ATTRIBUTE: {
- if (socketRef == 0) {
- request.localName().recycle();
- } else {
- if (socketWrapper.getLocalName() == null) {
- try {
- long sa = Address.get(Socket.APR_LOCAL, socketRef);
- socketWrapper.setLocalName(Address.getnameinfo(sa, 0));
- } catch (Exception e) {
- log.warn(sm.getString("http11processor.socket.info"), e);
- }
- }
- request.localName().setString(socketWrapper.getLocalName());
- }
- break;
- }
- case REQ_LOCAL_ADDR_ATTRIBUTE: {
- if (socketRef == 0) {
- request.localAddr().recycle();
- } else {
- if (socketWrapper.getLocalAddr() == null) {
- try {
- long sa = Address.get(Socket.APR_LOCAL, socketRef);
- socketWrapper.setLocalAddr(Address.getip(sa));
- } catch (Exception e) {
- log.warn(sm.getString("http11processor.socket.info"), e);
- }
- }
- request.localAddr().setString(socketWrapper.getLocalAddr());
- }
- break;
- }
- case REQ_REMOTEPORT_ATTRIBUTE: {
- if (socketRef == 0) {
- request.setRemotePort(0);
- } else {
- if (socketWrapper.getRemotePort() == -1) {
- try {
- long sa = Address.get(Socket.APR_REMOTE, socketRef);
- Sockaddr addr = Address.getInfo(sa);
- socketWrapper.setRemotePort(addr.port);
- } catch (Exception e) {
- log.warn(sm.getString("http11processor.socket.info"), e);
- }
- }
- request.setRemotePort(socketWrapper.getRemotePort());
- }
- break;
- }
- case REQ_LOCALPORT_ATTRIBUTE: {
- if (socketRef == 0) {
- request.setLocalPort(0);
- } else {
- if (socketWrapper.getLocalPort() == -1) {
- try {
- long sa = Address.get(Socket.APR_LOCAL, socketRef);
- Sockaddr addr = Address.getInfo(sa);
- socketWrapper.setLocalPort(addr.port);
- } catch (Exception e) {
- log.warn(sm.getString("http11processor.socket.info"), e);
- }
- }
- request.setLocalPort(socketWrapper.getLocalPort());
- }
- break;
- }
case REQ_SSL_ATTRIBUTE: {
if (endpoint.isSSLEnabled() && (socketRef != 0)) {
try {
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java?rev=1655739&r1=1655738&r2=1655739&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java Thu Jan 29 16:56:30 2015
@@ -17,8 +17,6 @@
package org.apache.coyote.http11;
import java.io.IOException;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
import javax.net.ssl.SSLEngine;
@@ -111,71 +109,6 @@ public class Http11Nio2Processor extends
public void actionInternal(ActionCode actionCode, Object param) {
switch (actionCode) {
- case REQ_LOCAL_NAME_ATTRIBUTE: {
- if (socketWrapper == null || socketWrapper.getSocket() == null) {
- request.localName().recycle();
- } else {
- if (socketWrapper.getLocalName() == null) {
- InetAddress inetAddr = null;
- try {
- inetAddr = ((InetSocketAddress) socketWrapper.getSocket().getIOChannel().getLocalAddress()).getAddress();
- } catch (IOException e) {
- // Ignore
- }
- if (inetAddr != null) {
- socketWrapper.setLocalName(inetAddr.getHostName());
- }
- }
- request.localName().setString(socketWrapper.getLocalName());
- }
- break;
- }
- case REQ_LOCAL_ADDR_ATTRIBUTE: {
- if (socketWrapper == null || socketWrapper.getSocket() == null) {
- request.localAddr().recycle();
- } else {
- if (socketWrapper.getLocalAddr() == null) {
- try {
- socketWrapper.setLocalAddr(
- ((InetSocketAddress) socketWrapper.getSocket().getIOChannel().getLocalAddress()).getAddress().getHostAddress());
- } catch (IOException e) {
- // Ignore
- }
- }
- request.localAddr().setString(socketWrapper.getLocalAddr());
- }
- break;
- }
- case REQ_REMOTEPORT_ATTRIBUTE: {
- if (socketWrapper == null || socketWrapper.getSocket() == null) {
- request.setRemotePort(0);
- } else {
- if (socketWrapper.getRemotePort() == -1) {
- try {
- socketWrapper.setRemotePort(((InetSocketAddress) socketWrapper.getSocket().getIOChannel().getRemoteAddress()).getPort());
- } catch (IOException e) {
- // Ignore
- }
- }
- request.setRemotePort(socketWrapper.getRemotePort());
- }
- break;
- }
- case REQ_LOCALPORT_ATTRIBUTE: {
- if (socketWrapper == null || socketWrapper.getSocket() == null) {
- request.setLocalPort(0);
- } else {
- if (socketWrapper.getLocalPort() == -1) {
- try {
- socketWrapper.setLocalPort(((InetSocketAddress) socketWrapper.getSocket().getIOChannel().getLocalAddress()).getPort());
- } catch (IOException e) {
- // Ignore
- }
- }
- request.setLocalPort(socketWrapper.getLocalPort());
- }
- break;
- }
case REQ_SSL_ATTRIBUTE: {
try {
if (sslSupport != null) {
Modified: tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java?rev=1655739&r1=1655738&r2=1655739&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java (original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Thu Jan 29 16:56:30 2015
@@ -17,7 +17,6 @@
package org.apache.coyote.http11;
import java.io.IOException;
-import java.net.InetAddress;
import javax.net.ssl.SSLEngine;
@@ -98,54 +97,6 @@ public class Http11NioProcessor extends
public void actionInternal(ActionCode actionCode, Object param) {
switch (actionCode) {
- case REQ_LOCAL_NAME_ATTRIBUTE: {
- if (socketWrapper == null) {
- request.localName().recycle();
- } else {
- if (socketWrapper.getLocalName() == null) {
- InetAddress inetAddr = socketWrapper.getSocket().getIOChannel().socket().getLocalAddress();
- if (inetAddr != null) {
- socketWrapper.setLocalName(inetAddr.getHostName());
- }
- }
- request.localName().setString(socketWrapper.getLocalName());
- }
- break;
- }
- case REQ_LOCAL_ADDR_ATTRIBUTE: {
- if (socketWrapper == null) {
- request.localAddr().recycle();
- } else {
- if (socketWrapper.getLocalAddr() == null) {
- socketWrapper.setLocalAddr(
- socketWrapper.getSocket().getIOChannel().socket().getLocalAddress().getHostAddress());
- }
- request.localAddr().setString(socketWrapper.getLocalAddr());
- }
- break;
- }
- case REQ_REMOTEPORT_ATTRIBUTE: {
- if (socketWrapper == null) {
- request.setRemotePort(0);
- } else {
- if (socketWrapper.getRemotePort() == -1) {
- socketWrapper.setRemotePort(socketWrapper.getSocket().getIOChannel().socket().getPort());
- }
- request.setRemotePort(socketWrapper.getRemotePort());
- }
- break;
- }
- case REQ_LOCALPORT_ATTRIBUTE: {
- if (socketWrapper == null) {
- request.setLocalPort(0);
- } else {
- if (socketWrapper.getLocalPort() == -1) {
- socketWrapper.setLocalPort(socketWrapper.getSocket().getIOChannel().socket().getLocalPort());
- }
- request.setLocalPort(socketWrapper.getLocalPort());
- }
- break;
- }
case REQ_SSL_ATTRIBUTE: {
try {
if (sslSupport != null) {
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java?rev=1655739&r1=1655738&r2=1655739&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/AprEndpoint.java Thu Jan 29 16:56:30 2015
@@ -2685,5 +2685,67 @@ public class AprEndpoint extends Abstrac
log.warn(sm.getString("endpoint.warn.noRemoteHost", getSocket()), e);
}
}
+
+
+ @Override
+ protected void populateRemotePort() {
+ long socket = getSocket().longValue();
+ if (socket == 0) {
+ return;
+ }
+ try {
+ long sa = Address.get(Socket.APR_REMOTE, socket);
+ Sockaddr addr = Address.getInfo(sa);
+ remotePort = addr.port;
+ } catch (Exception e) {
+ log.warn(sm.getString("endpoint.warn.noRemotePort", getSocket()), e);
+ }
+ }
+
+
+ @Override
+ protected void populateLocalName() {
+ long socket = getSocket().longValue();
+ if (socket == 0) {
+ return;
+ }
+ try {
+ long sa = Address.get(Socket.APR_LOCAL, socket);
+ localName =Address.getnameinfo(sa, 0);
+ } catch (Exception e) {
+ log.warn(sm.getString("endpoint.warn.noLocalName"), e);
+ }
+ }
+
+
+ @Override
+ protected void populateLocalAddr() {
+ long socket = getSocket().longValue();
+ if (socket == 0) {
+ return;
+ }
+ try {
+ long sa = Address.get(Socket.APR_LOCAL, socket);
+ localAddr = Address.getip(sa);
+ } catch (Exception e) {
+ log.warn(sm.getString("endpoint.warn.noLocalAddr"), e);
+ }
+ }
+
+
+ @Override
+ protected void populateLocalPort() {
+ long socket = getSocket().longValue();
+ if (socket == 0) {
+ return;
+ }
+ try {
+ long sa = Address.get(Socket.APR_LOCAL, socket);
+ Sockaddr addr = Address.getInfo(sa);
+ localPort = addr.port;
+ } catch (Exception e) {
+ log.warn(sm.getString("endpoint.warn.noLocalPort"), e);
+ }
+ }
}
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties?rev=1655739&r1=1655738&r2=1655739&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/LocalStrings.properties Thu Jan 29 16:56:30 2015
@@ -25,7 +25,11 @@ endpoint.warn.noInsecureReneg=Secure re-
endpoint.warn.unlockAcceptorFailed=Acceptor thread [{0}] failed to unlock. Forcing hard socket shutdown.
endpoint.warn.executorShutdown=The executor associated with thread pool [{0}] has not fully shutdown. Some application threads may still be running.
endpoint.warn.noRemoteAddr=Unable to determine remote address for socket [{0}]
-endpoint.warn.noRemoteHost=Unable to determine remote host for socket [{0}]
+endpoint.warn.noRemoteHost=Unable to determine remote host name for socket [{0}]
+endpoint.warn.noRemotePort=Unable to determine remote port for socket [{0}]
+endpoint.warn.noLocalAddr=Unable to determine local address for socket [{0}]
+endpoint.warn.noLocalName=Unable to determine local host name for socket [{0}]
+endpoint.warn.noLocalPort=Unable to determine local port for socket [{0}]
endpoint.debug.channelCloseFail=Failed to close channel
endpoint.debug.destroySocket=Destroying socket [{0}]
endpoint.debug.pollerAdd=Add to addList socket [{0}], timeout [{1}], flags [{2}]
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1655739&r1=1655738&r2=1655739&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Thu Jan 29 16:56:30 2015
@@ -237,7 +237,9 @@ public class Nio2Endpoint extends Abstra
// --------------------------------------------------------- Public Methods
/**
- * Number of keepalive sockets.
+ * Number of keep-alive sockets.
+ *
+ * @return Always returns -1.
*/
public int getKeepAliveCount() {
// For this connector, only the overall connection count is relevant
@@ -1340,6 +1342,62 @@ public class Nio2Endpoint extends Abstra
}
}
}
+
+
+ @Override
+ protected void populateRemotePort() {
+ SocketAddress socketAddress = null;
+ try {
+ socketAddress = getSocket().getIOChannel().getRemoteAddress();
+ } catch (IOException e) {
+ log.warn(sm.getString("endpoint.warn.noRemotePort", getSocket()), e);
+ }
+ if (socketAddress instanceof InetSocketAddress) {
+ remotePort = ((InetSocketAddress) socketAddress).getPort();
+ }
+ }
+
+
+ @Override
+ protected void populateLocalName() {
+ SocketAddress socketAddress = null;
+ try {
+ socketAddress = getSocket().getIOChannel().getLocalAddress();
+ } catch (IOException e) {
+ log.warn(sm.getString("endpoint.warn.noLocalName", getSocket()), e);
+ }
+ if (socketAddress instanceof InetSocketAddress) {
+ localName = ((InetSocketAddress) socketAddress).getHostName();
+ }
+ }
+
+
+ @Override
+ protected void populateLocalAddr() {
+ SocketAddress socketAddress = null;
+ try {
+ socketAddress = getSocket().getIOChannel().getLocalAddress();
+ } catch (IOException e) {
+ log.warn(sm.getString("endpoint.warn.noLocalAddr", getSocket()), e);
+ }
+ if (socketAddress instanceof InetSocketAddress) {
+ localAddr = ((InetSocketAddress) socketAddress).getAddress().getHostAddress();
+ }
+ }
+
+
+ @Override
+ protected void populateLocalPort() {
+ SocketAddress socketAddress = null;
+ try {
+ socketAddress = getSocket().getIOChannel().getLocalAddress();
+ } catch (IOException e) {
+ log.warn(sm.getString("endpoint.warn.noLocalPort", getSocket()), e);
+ }
+ if (socketAddress instanceof InetSocketAddress) {
+ localPort = ((InetSocketAddress) socketAddress).getPort();
+ }
+ }
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java?rev=1655739&r1=1655738&r2=1655739&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/NioEndpoint.java Thu Jan 29 16:56:30 2015
@@ -193,7 +193,9 @@ public class NioEndpoint extends Abstrac
private Poller[] pollers = null;
private AtomicInteger pollerRotater = new AtomicInteger(0);
/**
- * Return an available poller in true round robin fashion
+ * Return an available poller in true round robin fashion.
+ *
+ * @return The next poller in sequence
*/
public Poller getPoller0() {
int idx = Math.abs(pollerRotater.incrementAndGet()) % pollers.length;
@@ -290,7 +292,10 @@ public class NioEndpoint extends Abstrac
// --------------------------------------------------------- Public Methods
/**
- * Number of keepalive sockets.
+ * Number of keep-alive sockets.
+ *
+ * @return The number of sockets currently in the keep-alive state waiting
+ * for the next request to be received on the socket
*/
public int getKeepAliveCount() {
if (pollers == null) {
@@ -1566,6 +1571,36 @@ public class NioEndpoint extends Abstrac
}
}
}
+
+
+ @Override
+ protected void populateRemotePort() {
+ remotePort = getSocket().getIOChannel().socket().getPort();
+ }
+
+
+ @Override
+ protected void populateLocalName() {
+ InetAddress inetAddr = getSocket().getIOChannel().socket().getLocalAddress();
+ if (inetAddr != null) {
+ localName = inetAddr.getHostName();
+ }
+ }
+
+
+ @Override
+ protected void populateLocalAddr() {
+ InetAddress inetAddr = getSocket().getIOChannel().socket().getLocalAddress();
+ if (inetAddr != null) {
+ localAddr = inetAddr.getHostAddress();
+ }
+ }
+
+
+ @Override
+ protected void populateLocalPort() {
+ localPort = getSocket().getIOChannel().socket().getLocalPort();
+ }
}
Modified: tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java?rev=1655739&r1=1655738&r2=1655739&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/net/SocketWrapperBase.java Thu Jan 29 16:56:30 2015
@@ -158,14 +158,6 @@ public abstract class SocketWrapperBase<
public int decrementKeepAlive() { return (--keepAliveLeft);}
public boolean isKeptAlive() {return keptAlive;}
public void setKeptAlive(boolean keptAlive) {this.keptAlive = keptAlive;}
- public int getLocalPort() { return localPort; }
- public void setLocalPort(int localPort) {this.localPort = localPort; }
- public String getLocalName() { return localName; }
- public void setLocalName(String localName) {this.localName = localName; }
- public String getLocalAddr() { return localAddr; }
- public void setLocalAddr(String localAddr) {this.localAddr = localAddr; }
- public int getRemotePort() { return remotePort; }
- public void setRemotePort(int remotePort) {this.remotePort = remotePort; }
public String getRemoteHost() {
if (remoteHost == null) {
@@ -183,6 +175,38 @@ public abstract class SocketWrapperBase<
}
protected abstract void populateRemoteAddr();
+ public int getRemotePort() {
+ if (remotePort == -1) {
+ populateRemotePort();
+ }
+ return remotePort;
+ }
+ protected abstract void populateRemotePort();
+
+ public String getLocalName() {
+ if (localName == null) {
+ populateLocalName();
+ }
+ return localName;
+ }
+ protected abstract void populateLocalName();
+
+ public String getLocalAddr() {
+ if (localAddr == null) {
+ populateLocalAddr();
+ }
+ return localAddr;
+ }
+ protected abstract void populateLocalAddr();
+
+ public int getLocalPort() {
+ if (localPort == -1) {
+ populateLocalPort();
+ }
+ return localPort;
+ }
+ protected abstract void populateLocalPort();
+
public boolean getBlockingStatus() { return blockingStatus; }
public void setBlockingStatus(boolean blockingStatus) {
this.blockingStatus = blockingStatus;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org