aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2009-07-09 16:40:30 +0000
committerKenny Root <kenny@the-b.org>2009-07-09 16:40:30 +0000
commit7cdc95fcb4afb6714f95232e235583f12dfaa899 (patch)
tree636273b8042c8aed79f875b6db7b6db1ec9d1982
parentb73c25d48156f2227946f5730286a2e586c8dcb9 (diff)
downloadsshlib-7cdc95fcb4afb6714f95232e235583f12dfaa899.tar.gz
sshlib-7cdc95fcb4afb6714f95232e235583f12dfaa899.tar.bz2
sshlib-7cdc95fcb4afb6714f95232e235583f12dfaa899.zip
Support SOCKS 4a extension for resolving hostnames remotely
git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@363 df292f66-193f-0410-a5fc-6d59da041ff2
-rw-r--r--lib/src/main/java/com/trilead/ssh2/channel/DynamicAcceptThread.java23
1 files changed, 8 insertions, 15 deletions
diff --git a/lib/src/main/java/com/trilead/ssh2/channel/DynamicAcceptThread.java b/lib/src/main/java/com/trilead/ssh2/channel/DynamicAcceptThread.java
index 33f8200..fee4529 100644
--- a/lib/src/main/java/com/trilead/ssh2/channel/DynamicAcceptThread.java
+++ b/lib/src/main/java/com/trilead/ssh2/channel/DynamicAcceptThread.java
@@ -128,13 +128,6 @@ public class DynamicAcceptThread extends Thread implements IChannelWorkerThread
if (!auth.checkRequest(msg))
throw new SocksException(Proxy.SOCKS_FAILURE);
- if (msg.ip == null) {
- if (msg instanceof Socks5Message) {
- msg.ip = InetAddress.getByName(msg.host);
- } else
- throw new SocksException(Proxy.SOCKS_FAILURE);
- }
-
switch (msg.command) {
case Proxy.SOCKS_CMD_CONNECT:
onConnect(msg);
@@ -175,24 +168,24 @@ public class DynamicAcceptThread extends Thread implements IChannelWorkerThread
StreamForwarder l2r = null;
if (msg instanceof Socks5Message) {
- response = new Socks5Message(Proxy.SOCKS_SUCCESS, sock
- .getLocalAddress(), sock.getLocalPort());
+ response = new Socks5Message(Proxy.SOCKS_SUCCESS, (InetAddress)null, 0);
} else {
- response = new Socks4Message(Socks4Message.REPLY_OK, sock
- .getLocalAddress(), sock.getLocalPort());
-
+ response = new Socks4Message(Socks4Message.REPLY_OK, (InetAddress)null, 0);
}
response.write(out);
+ String destHost = msg.host;
+ if (msg.ip != null)
+ destHost = msg.ip.getHostAddress();
+
try {
/*
* This may fail, e.g., if the remote port is closed (in
* optimistic terms: not open yet)
*/
- cn = cm.openDirectTCPIPChannel(msg.host, msg.port,
- sock.getInetAddress().getHostAddress(),
- sock.getPort());
+ cn = cm.openDirectTCPIPChannel(destHost, msg.port,
+ "127.0.0.1", 0);
} catch (IOException e) {
/*