Author: markt
Date: Thu Jan 29 12:57:50 2015
New Revision: 1655638
URL: http://svn.apache.org/r1655638
Log:
Push obtaining the remote host and address 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=1655638&r1=1655637&r2=1655638&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/AbstractHttp11Processor.java Thu
Jan 29 12:57:50 2015
@@ -886,6 +886,22 @@ public abstract class AbstractHttp11Proc
setErrorState(ErrorState.CLOSE_NOW, null);
break;
}
+ case REQ_HOST_ADDR_ATTRIBUTE: {
+ if (socketWrapper == null) {
+ request.remoteAddr().recycle();
+ } else {
+ request.remoteAddr().setString(socketWrapper.getRemoteAddr());
+ }
+ break;
+ }
+ case REQ_HOST_ATTRIBUTE: {
+ if (socketWrapper == null) {
+ request.remoteHost().recycle();
+ } else {
+ request.remoteHost().setString(socketWrapper.getRemoteHost());
+ }
+ 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=1655638&r1=1655637&r2=1655638&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11AprProcessor.java Thu Jan
29 12:57:50 2015
@@ -109,22 +109,6 @@ public class Http11AprProcessor extends
long socketRef = socketWrapper.getSocket().longValue();
switch (actionCode) {
- case REQ_HOST_ADDR_ATTRIBUTE: {
- if (socketRef == 0) {
- request.remoteAddr().recycle();
- } else {
- if (socketWrapper.getRemoteAddr() == null) {
- try {
- long sa = Address.get(Socket.APR_REMOTE, socketRef);
- socketWrapper.setRemoteAddr(Address.getip(sa));
- } catch (Exception e) {
- log.warn(sm.getString("http11processor.socket.info"),
e);
- }
- }
- request.remoteAddr().setString(socketWrapper.getRemoteAddr());
- }
- break;
- }
case REQ_LOCAL_NAME_ATTRIBUTE: {
if (socketRef == 0) {
request.localName().recycle();
@@ -141,31 +125,6 @@ public class Http11AprProcessor extends
}
break;
}
- case REQ_HOST_ATTRIBUTE: {
- if (socketRef == 0) {
- request.remoteHost().recycle();
- } else {
- if (socketWrapper.getRemoteHost() == null) {
- try {
- long sa = Address.get(Socket.APR_REMOTE, socketRef);
- socketWrapper.setRemoteHost(Address.getnameinfo(sa,
0));
- if (socketWrapper.getRemoteHost() == null) {
- if (socketWrapper.getRemoteAddr() == null) {
- socketWrapper.setRemoteAddr(Address.getip(sa));
- }
- if (socketWrapper.getRemoteAddr() != null) {
-
socketWrapper.setRemoteHost(socketWrapper.getRemoteAddr());
- }
- }
- } catch (Exception e) {
- log.warn(sm.getString("http11processor.socket.info"),
e);
- }
- } else {
-
request.remoteHost().setString(socketWrapper.getRemoteHost());
- }
- }
- break;
- }
case REQ_LOCAL_ADDR_ATTRIBUTE: {
if (socketRef == 0) {
request.localAddr().recycle();
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=1655638&r1=1655637&r2=1655638&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11Nio2Processor.java Thu Jan
29 12:57:50 2015
@@ -111,25 +111,6 @@ public class Http11Nio2Processor extends
public void actionInternal(ActionCode actionCode, Object param) {
switch (actionCode) {
- case REQ_HOST_ADDR_ATTRIBUTE: {
- if (socketWrapper == null || socketWrapper.getSocket() == null) {
- request.remoteAddr().recycle();
- } else {
- if (socketWrapper.getRemoteAddr() == null) {
- InetAddress inetAddr = null;
- try {
- inetAddr = ((InetSocketAddress)
socketWrapper.getSocket().getIOChannel().getRemoteAddress()).getAddress();
- } catch (IOException e) {
- // Ignore
- }
- if (inetAddr != null) {
- socketWrapper.setRemoteAddr(inetAddr.getHostAddress());
- }
- }
- request.remoteAddr().setString(socketWrapper.getRemoteAddr());
- }
- break;
- }
case REQ_LOCAL_NAME_ATTRIBUTE: {
if (socketWrapper == null || socketWrapper.getSocket() == null) {
request.localName().recycle();
@@ -149,34 +130,6 @@ public class Http11Nio2Processor extends
}
break;
}
- case REQ_HOST_ATTRIBUTE: {
- if (socketWrapper == null || socketWrapper.getSocket() == null) {
- request.remoteHost().recycle();
- } else {
- if (socketWrapper.getRemoteHost() == null) {
- InetAddress inetAddr = null;
- try {
- inetAddr = ((InetSocketAddress)
socketWrapper.getSocket().getIOChannel().getRemoteAddress()).getAddress();
- } catch (IOException e) {
- // Ignore
- }
- if (inetAddr != null) {
- socketWrapper.setRemoteHost(inetAddr.getHostName());
- }
- if (socketWrapper.getRemoteHost() == null) {
- if (socketWrapper.getRemoteAddr() == null &&
- inetAddr != null) {
-
socketWrapper.setRemoteAddr(inetAddr.getHostAddress());
- }
- if (socketWrapper.getRemoteAddr() != null) {
-
socketWrapper.setRemoteHost(socketWrapper.getRemoteAddr());
- }
- }
- }
- request.remoteHost().setString(socketWrapper.getRemoteHost());
- }
- break;
- }
case REQ_LOCAL_ADDR_ATTRIBUTE: {
if (socketWrapper == null || socketWrapper.getSocket() == null) {
request.localAddr().recycle();
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=1655638&r1=1655637&r2=1655638&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java
(original)
+++ tomcat/trunk/java/org/apache/coyote/http11/Http11NioProcessor.java Thu Jan
29 12:57:50 2015
@@ -98,20 +98,6 @@ public class Http11NioProcessor extends
public void actionInternal(ActionCode actionCode, Object param) {
switch (actionCode) {
- case REQ_HOST_ADDR_ATTRIBUTE: {
- if (socketWrapper == null) {
- request.remoteAddr().recycle();
- } else {
- if (socketWrapper.getRemoteAddr() == null) {
- InetAddress inetAddr =
socketWrapper.getSocket().getIOChannel().socket().getInetAddress();
- if (inetAddr != null) {
- socketWrapper.setRemoteAddr(inetAddr.getHostAddress());
- }
- }
- request.remoteAddr().setString(socketWrapper.getRemoteAddr());
- }
- break;
- }
case REQ_LOCAL_NAME_ATTRIBUTE: {
if (socketWrapper == null) {
request.localName().recycle();
@@ -126,29 +112,6 @@ public class Http11NioProcessor extends
}
break;
}
- case REQ_HOST_ATTRIBUTE: {
- if (socketWrapper == null) {
- request.remoteHost().recycle();
- } else {
- if (socketWrapper.getRemoteHost() == null) {
- InetAddress inetAddr =
socketWrapper.getSocket().getIOChannel().socket().getInetAddress();
- if (inetAddr != null) {
- socketWrapper.setRemoteHost(inetAddr.getHostName());
- }
- if (socketWrapper.getRemoteHost() == null) {
- if (socketWrapper.getRemoteAddr() == null &&
- inetAddr != null) {
-
socketWrapper.setRemoteAddr(inetAddr.getHostAddress());
- }
- if (socketWrapper.getRemoteAddr() != null) {
-
socketWrapper.setRemoteHost(socketWrapper.getRemoteAddr());
- }
- }
- }
- request.remoteHost().setString(socketWrapper.getRemoteHost());
- }
- break;
- }
case REQ_LOCAL_ADDR_ATTRIBUTE: {
if (socketWrapper == null) {
request.localAddr().recycle();
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=1655638&r1=1655637&r2=1655638&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
12:57:50 2015
@@ -2652,5 +2652,38 @@ public class AprEndpoint extends Abstrac
((SendfileData) sendfileData).socket = getSocket().longValue();
return ((AprEndpoint)
getEndpoint()).getSendfile().add((SendfileData) sendfileData);
}
+
+
+ @Override
+ protected void populateRemoteAddr() {
+ long socket = getSocket().longValue();
+ if (socket == 0) {
+ return;
+ }
+ try {
+ long sa = Address.get(Socket.APR_REMOTE, socket);
+ remoteAddr = Address.getip(sa);
+ } catch (Exception e) {
+ log.warn(sm.getString("endpoint.warn.noRemoteAddr",
getSocket()), e);
+ }
+ }
+
+
+ @Override
+ protected void populateRemoteHost() {
+ long socket = getSocket().longValue();
+ if (socket == 0) {
+ return;
+ }
+ try {
+ long sa = Address.get(Socket.APR_REMOTE, socket);
+ remoteHost = Address.getnameinfo(sa, 0);
+ if (remoteAddr == null) {
+ remoteAddr = Address.getip(sa);
+ }
+ } catch (Exception e) {
+ log.warn(sm.getString("endpoint.warn.noRemoteHost",
getSocket()), 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=1655638&r1=1655637&r2=1655638&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 12:57:50 2015
@@ -24,6 +24,8 @@ endpoint.warn.noHonorCipherOrder='Honor
endpoint.warn.noInsecureReneg=Secure re-negotiation is not supported by the
SSL library {0}
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.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=1655638&r1=1655637&r2=1655638&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
12:57:50 2015
@@ -1309,6 +1309,37 @@ public class Nio2Endpoint extends Abstra
setSendfileData((SendfileData) sendfileData);
return ((Nio2Endpoint) getEndpoint()).processSendfile(this);
}
+
+
+ @Override
+ protected void populateRemoteAddr() {
+ SocketAddress socketAddress = null;
+ try {
+ socketAddress = getSocket().getIOChannel().getRemoteAddress();
+ } catch (IOException e) {
+ // Ignore
+ }
+ if (socketAddress instanceof InetSocketAddress) {
+ remoteAddr = ((InetSocketAddress)
socketAddress).getAddress().getHostAddress();
+ }
+ }
+
+
+ @Override
+ protected void populateRemoteHost() {
+ SocketAddress socketAddress = null;
+ try {
+ socketAddress = getSocket().getIOChannel().getRemoteAddress();
+ } catch (IOException e) {
+ log.warn(sm.getString("endpoint.warn.noRemoteHost",
getSocket()), e);
+ }
+ if (socketAddress instanceof InetSocketAddress) {
+ remoteHost = ((InetSocketAddress)
socketAddress).getAddress().getHostName();
+ if (remoteAddr == null) {
+ remoteAddr = ((InetSocketAddress)
socketAddress).getAddress().getHostAddress();
+ }
+ }
+ }
}
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=1655638&r1=1655637&r2=1655638&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
12:57:50 2015
@@ -21,6 +21,7 @@ import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
+import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
@@ -1535,6 +1536,7 @@ public class NioEndpoint extends Abstrac
return new SendfileData(filename, pos, length);
}
+
@Override
public SendfileState processSendfile(SendfileDataBase sendfileData) {
setSendfileData((SendfileData) sendfileData);
@@ -1543,6 +1545,27 @@ public class NioEndpoint extends Abstrac
// Might as well do the first write on this thread
return getSocket().getPoller().processSendfile(key, this, true);
}
+
+
+ @Override
+ protected void populateRemoteAddr() {
+ InetAddress inetAddr =
getSocket().getIOChannel().socket().getInetAddress();
+ if (inetAddr != null) {
+ remoteAddr = inetAddr.getHostAddress();
+ }
+ }
+
+
+ @Override
+ protected void populateRemoteHost() {
+ InetAddress inetAddr =
getSocket().getIOChannel().socket().getInetAddress();
+ if (inetAddr != null) {
+ remoteHost = inetAddr.getHostName();
+ if (remoteAddr == null) {
+ remoteAddr = inetAddr.getHostAddress();
+ }
+ }
+ }
}
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=1655638&r1=1655637&r2=1655638&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 12:57:50 2015
@@ -46,12 +46,12 @@ public abstract class SocketWrapperBase<
/*
* Following cached for speed / reduced GC
*/
- private String localAddr = null;
- private String localName = null;
- private int localPort = -1;
- private String remoteAddr = null;
- private String remoteHost = null;
- private int remotePort = -1;
+ protected String localAddr = null;
+ protected String localName = null;
+ protected int localPort = -1;
+ protected String remoteAddr = null;
+ protected String remoteHost = null;
+ protected int remotePort = -1;
/*
* Used if block/non-blocking is set at the socket level. The client is
* responsible for the thread-safe use of this field via the locks
provided.
@@ -166,10 +166,23 @@ public abstract class SocketWrapperBase<
public void setLocalAddr(String localAddr) {this.localAddr = localAddr; }
public int getRemotePort() { return remotePort; }
public void setRemotePort(int remotePort) {this.remotePort = remotePort; }
- public String getRemoteHost() { return remoteHost; }
- public void setRemoteHost(String remoteHost) {this.remoteHost =
remoteHost; }
- public String getRemoteAddr() { return remoteAddr; }
- public void setRemoteAddr(String remoteAddr) {this.remoteAddr =
remoteAddr; }
+
+ public String getRemoteHost() {
+ if (remoteHost == null) {
+ populateRemoteHost();
+ }
+ return remoteHost;
+ }
+ protected abstract void populateRemoteHost();
+
+ public String getRemoteAddr() {
+ if (remoteAddr == null) {
+ populateRemoteAddr();
+ }
+ return remoteAddr;
+ }
+ protected abstract void populateRemoteAddr();
+
public boolean getBlockingStatus() { return blockingStatus; }
public void setBlockingStatus(boolean blockingStatus) {
this.blockingStatus = blockingStatus;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]