diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/org/connectbot/transport/Telnet.java | 19 | 
1 files changed, 18 insertions, 1 deletions
diff --git a/src/org/connectbot/transport/Telnet.java b/src/org/connectbot/transport/Telnet.java index 16cbd0e..ed8fc95 100644 --- a/src/org/connectbot/transport/Telnet.java +++ b/src/org/connectbot/transport/Telnet.java @@ -20,8 +20,11 @@ package org.connectbot.transport;  import java.io.IOException;  import java.io.InputStream;  import java.io.OutputStream; +import java.net.InetAddress; +import java.net.InetSocketAddress;  import java.net.Socket;  import java.net.SocketException; +import java.net.SocketTimeoutException;  import java.net.UnknownHostException;  import java.nio.charset.Charset;  import java.util.Map; @@ -123,10 +126,24 @@ public class Telnet extends AbsTransport {  		return PROTOCOL;  	} +	private static void tryAllAddresses(Socket sock, String host, int port) throws IOException { +		InetAddress[] addresses = InetAddress.getAllByName(host); +		for (InetAddress addr : addresses) { +			try { +				sock.connect(new InetSocketAddress(addr, port)); +				return; +			} catch (SocketTimeoutException e) { +			} +		} +		throw new SocketTimeoutException("Could not connect; socket timed out"); +	} +  	@Override  	public void connect() {  		try { -			socket = new Socket(host.getHostname(), host.getPort()); +			socket = new Socket(); + +			tryAllAddresses(socket, host.getHostname(), host.getPort());  			connected = true;  | 
