aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2015-04-19 22:35:01 -0700
committerKenny Root <kenny@the-b.org>2015-04-19 22:44:34 -0700
commitc960f1ef596e6b1393f18ece9b2bd74353eb115f (patch)
treea2e5e75d1ab5432294aafca7472215caa874e214 /src
parent852bd62cc255c1911deaf8a925648b86ecb4ccb3 (diff)
downloadconnectbot-c960f1ef596e6b1393f18ece9b2bd74353eb115f.tar.gz
connectbot-c960f1ef596e6b1393f18ece9b2bd74353eb115f.tar.bz2
connectbot-c960f1ef596e6b1393f18ece9b2bd74353eb115f.zip
telnet: try all addresses for host
Closes #46
Diffstat (limited to 'src')
-rw-r--r--src/org/connectbot/transport/Telnet.java19
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;