From d16c812901dcbe5b69d8bb16721693378f79e04d Mon Sep 17 00:00:00 2001 From: Kenny Root Date: Wed, 17 Jun 2009 05:22:01 +0000 Subject: Properly disconnect SSH when remote host ends t git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@315 df292f66-193f-0410-a5fc-6d59da041ff2 --- src/org/connectbot/service/TerminalBridge.java | 2 +- src/org/connectbot/transport/SSH.java | 5 ++++- 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"); } -- cgit v1.2.3