aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/org/connectbot
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2015-04-19 22:45:07 -0700
committerKenny Root <kenny@the-b.org>2015-04-19 22:45:07 -0700
commitd0e73184b960283ea7db3f905170d49160f010f8 (patch)
tree5e7917b6d1c3fb68155d547cfe744302b2e7a65f /app/src/main/java/org/connectbot
parent5af75d5b3657409a9d46d48bafa446df9646ae0c (diff)
parentc960f1ef596e6b1393f18ece9b2bd74353eb115f (diff)
downloadconnectbot-d0e73184b960283ea7db3f905170d49160f010f8.tar.gz
connectbot-d0e73184b960283ea7db3f905170d49160f010f8.tar.bz2
connectbot-d0e73184b960283ea7db3f905170d49160f010f8.zip
Merge branch 'master' into gradle-conversion
Diffstat (limited to 'app/src/main/java/org/connectbot')
-rw-r--r--app/src/main/java/org/connectbot/service/TerminalManager.java11
-rw-r--r--app/src/main/java/org/connectbot/transport/Telnet.java19
2 files changed, 25 insertions, 5 deletions
diff --git a/app/src/main/java/org/connectbot/service/TerminalManager.java b/app/src/main/java/org/connectbot/service/TerminalManager.java
index 3bf9841..31838a2 100644
--- a/app/src/main/java/org/connectbot/service/TerminalManager.java
+++ b/app/src/main/java/org/connectbot/service/TerminalManager.java
@@ -170,7 +170,7 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
public void onDestroy() {
Log.i(TAG, "Destroying service");
- disconnectAll(true);
+ disconnectAll(true, false);
if (hostdb != null) {
hostdb.close();
@@ -199,7 +199,7 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
/**
* Disconnect all currently connected bridges.
*/
- private void disconnectAll(final boolean immediate) {
+ private void disconnectAll(final boolean immediate, final boolean excludeLocal) {
TerminalBridge[] tmpBridges = null;
synchronized (bridges) {
@@ -210,8 +210,11 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
if (tmpBridges != null) {
// disconnect and dispose of any existing bridges
- for (int i = 0; i < tmpBridges.length; i++)
+ for (int i = 0; i < tmpBridges.length; i++) {
+ if (excludeLocal && !tmpBridges[i].isUsingNetwork())
+ continue;
tmpBridges[i].dispatchDisconnect(immediate);
+ }
}
}
@@ -653,7 +656,7 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen
final Thread t = new Thread() {
@Override
public void run() {
- disconnectAll(false);
+ disconnectAll(false, true);
}
};
t.setName("Disconnector");
diff --git a/app/src/main/java/org/connectbot/transport/Telnet.java b/app/src/main/java/org/connectbot/transport/Telnet.java
index 16cbd0e..ed8fc95 100644
--- a/app/src/main/java/org/connectbot/transport/Telnet.java
+++ b/app/src/main/java/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;