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 | |
| 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')
| -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) {  				/* | 
