aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKenny Root <kenny@the-b.org>2009-06-17 05:22:01 +0000
committerKenny Root <kenny@the-b.org>2009-06-17 05:22:01 +0000
commitd16c812901dcbe5b69d8bb16721693378f79e04d (patch)
tree4c24ebf0652b7593ea81677e5b43d5355bdd5427
parent7f6667acf6fde9ffbad59be83bbcca955555e703 (diff)
downloadconnectbot-d16c812901dcbe5b69d8bb16721693378f79e04d.tar.gz
connectbot-d16c812901dcbe5b69d8bb16721693378f79e04d.tar.bz2
connectbot-d16c812901dcbe5b69d8bb16721693378f79e04d.zip
Properly disconnect SSH when remote host ends t
git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@315 df292f66-193f-0410-a5fc-6d59da041ff2
-rw-r--r--src/org/connectbot/service/TerminalBridge.java2
-rw-r--r--src/org/connectbot/transport/SSH.java5
2 files changed, 5 insertions, 2 deletions
diff --git a/src/org/connectbot/service/TerminalBridge.java b/src/org/connectbot/service/TerminalBridge.java
index d80131f..8538257 100644
--- a/src/org/connectbot/service/TerminalBridge.java
+++ b/src/org/connectbot/service/TerminalBridge.java
@@ -406,7 +406,7 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener {
// temporary fix is to just spawn disconnection into a thread
Thread disconnectThread = new Thread(new Runnable() {
public void run() {
- if(transport != null)
+ if (transport != null && transport.isConnected())
transport.close();
}
});
diff --git a/src/org/connectbot/transport/SSH.java b/src/org/connectbot/transport/SSH.java
index 487d0a3..aa41202 100644
--- a/src/org/connectbot/transport/SSH.java
+++ b/src/org/connectbot/transport/SSH.java
@@ -90,7 +90,7 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC
static final Pattern hostmask;
static {
- hostmask = Pattern.compile("^(.+)@([0-9a-z.-]+)(:(\\d+))?$", Pattern.CASE_INSENSITIVE);
+ hostmask = Pattern.compile("^(.+)@([0-9a-z.-]+)(:(\\d+))?$", Pattern.CASE_INSENSITIVE);
}
private boolean compression = false;
@@ -445,6 +445,8 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC
@Override
public void close() {
+ connected = false;
+
if (session != null)
session.close();
if (connection != null)
@@ -483,6 +485,7 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC
}
if ((newConditions & ChannelCondition.EOF) != 0) {
+ onDisconnect();
throw new IOException("Remote end closed connection");
}