diff options
author | Kenny Root <kenny@the-b.org> | 2009-07-09 16:40:30 +0000 |
---|---|---|
committer | Kenny Root <kenny@the-b.org> | 2009-07-09 16:40:30 +0000 |
commit | 7cdc95fcb4afb6714f95232e235583f12dfaa899 (patch) | |
tree | 636273b8042c8aed79f875b6db7b6db1ec9d1982 /lib/src/main/java/com | |
parent | b73c25d48156f2227946f5730286a2e586c8dcb9 (diff) | |
download | sshlib-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
Diffstat (limited to 'lib/src/main/java/com')
-rw-r--r-- | lib/src/main/java/com/trilead/ssh2/channel/DynamicAcceptThread.java | 23 |
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) { /* |