diff options
author | Kenny Root <kenny@the-b.org> | 2009-06-17 03:41:38 +0000 |
---|---|---|
committer | Kenny Root <kenny@the-b.org> | 2009-06-17 03:41:38 +0000 |
commit | 6eb907a69760b484d2a7f17230a1e9f820dace06 (patch) | |
tree | a6469bdd68f2c599edc98927afc0805d8c4267f2 /src | |
parent | 8015df3feb2eb05b827eb0ddd8495307f9d22584 (diff) | |
download | connectbot-6eb907a69760b484d2a7f17230a1e9f820dace06.tar.gz connectbot-6eb907a69760b484d2a7f17230a1e9f820dace06.tar.bz2 connectbot-6eb907a69760b484d2a7f17230a1e9f820dace06.zip |
Various fixes for transports branch bugs
git-svn-id: https://connectbot.googlecode.com/svn/trunk/connectbot@312 df292f66-193f-0410-a5fc-6d59da041ff2
Diffstat (limited to 'src')
-rw-r--r-- | src/org/connectbot/service/Relay.java | 2 | ||||
-rw-r--r-- | src/org/connectbot/service/TerminalBridge.java | 18 | ||||
-rw-r--r-- | src/org/connectbot/service/TerminalManager.java | 4 | ||||
-rw-r--r-- | src/org/connectbot/transport/AbsTransport.java | 2 | ||||
-rw-r--r-- | src/org/connectbot/transport/SSH.java | 8 | ||||
-rw-r--r-- | src/org/connectbot/transport/TransportFactory.java | 2 |
6 files changed, 28 insertions, 8 deletions
diff --git a/src/org/connectbot/service/Relay.java b/src/org/connectbot/service/Relay.java index 8ac4efc..c15f3f4 100644 --- a/src/org/connectbot/service/Relay.java +++ b/src/org/connectbot/service/Relay.java @@ -70,7 +70,7 @@ public class Relay implements Runnable { else charset = Charset.forName(encoding); - if (charset == currentCharset) + if (charset == currentCharset || charset == null) return; CharsetDecoder newCd = charset.newDecoder(); diff --git a/src/org/connectbot/service/TerminalBridge.java b/src/org/connectbot/service/TerminalBridge.java index 27edd2b..d80131f 100644 --- a/src/org/connectbot/service/TerminalBridge.java +++ b/src/org/connectbot/service/TerminalBridge.java @@ -265,7 +265,6 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { /** * Spawn thread to open connection and start login process. */ - @SuppressWarnings("static-access") protected void startConnection() { transport = TransportFactory.getTransport(host.getProtocol()); transport.setBridge(this); @@ -310,7 +309,8 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { * @param encoding the canonical name of the character encoding */ public void setCharset(String encoding) { - relay.setCharset(encoding); + if (relay != null) + relay.setCharset(encoding); } /** @@ -856,6 +856,10 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { int width = parent.getWidth(); int height = parent.getHeight(); + // Something has gone wrong with our layout; we're 0 width or height! + if (width <= 0 || height <= 0) + return; + clipboard = (ClipboardManager) parent.getContext().getSystemService(Context.CLIPBOARD_SERVICE); if (!forcedSize) { @@ -1144,6 +1148,11 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { * @return true on successful port forward setup */ public boolean enablePortForward(PortForwardBean portForward) { + if (!transport.isConnected()) { + Log.i(TAG, "Attempt to enable port forward while not connected"); + return false; + } + return transport.enablePortForward(portForward); } @@ -1154,6 +1163,11 @@ public class TerminalBridge implements VDUDisplay, OnKeyListener { * @return true on successful port forward tear-down */ public boolean disablePortForward(PortForwardBean portForward) { + if (!transport.isConnected()) { + Log.i(TAG, "Attempt to disable port forward while not connected"); + return false; + } + return transport.disablePortForward(portForward); } diff --git a/src/org/connectbot/service/TerminalManager.java b/src/org/connectbot/service/TerminalManager.java index 9b5f6a4..74bc180 100644 --- a/src/org/connectbot/service/TerminalManager.java +++ b/src/org/connectbot/service/TerminalManager.java @@ -207,7 +207,9 @@ public class TerminalManager extends Service implements BridgeDisconnectedListen // Add a reference to the WifiLock NetworkInfo info = connectivityManager.getActiveNetworkInfo(); - if (isLockingWifi() && info.getType() == ConnectivityManager.TYPE_WIFI) { + if (isLockingWifi() && + info != null && + info.getType() == ConnectivityManager.TYPE_WIFI) { Log.d(TAG, "Acquiring WifiLock"); wifilock.acquire(); } diff --git a/src/org/connectbot/transport/AbsTransport.java b/src/org/connectbot/transport/AbsTransport.java index 582d4e7..e2cbc33 100644 --- a/src/org/connectbot/transport/AbsTransport.java +++ b/src/org/connectbot/transport/AbsTransport.java @@ -157,7 +157,7 @@ public abstract class AbsTransport { * Whether or not this transport type can forward ports. * @return true on ability to forward ports */ - public static boolean canForwardPorts() { + public boolean canForwardPorts() { return false; } diff --git a/src/org/connectbot/transport/SSH.java b/src/org/connectbot/transport/SSH.java index fa987f7..487d0a3 100644 --- a/src/org/connectbot/transport/SSH.java +++ b/src/org/connectbot/transport/SSH.java @@ -463,9 +463,12 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC } @Override - public int read(byte[] buffer, int start, int len) throws IOException{ + public int read(byte[] buffer, int start, int len) throws IOException { int bytesRead = 0; + if (session == null) + return 0; + int newConditions = session.waitForCondition(conditions, 0); if ((newConditions & ChannelCondition.STDOUT_DATA) != 0) { @@ -531,7 +534,8 @@ public class SSH extends AbsTransport implements ConnectionMonitor, InteractiveC bridge.dispatchDisconnect(true); } - public static boolean canForwardPorts() { + @Override + public boolean canForwardPorts() { return true; } diff --git a/src/org/connectbot/transport/TransportFactory.java b/src/org/connectbot/transport/TransportFactory.java index 7e64363..1239441 100644 --- a/src/org/connectbot/transport/TransportFactory.java +++ b/src/org/connectbot/transport/TransportFactory.java @@ -79,7 +79,7 @@ public class TransportFactory { public static boolean canForwardPorts(String protocol) { // TODO uh, make this have less knowledge about its children if (SSH.getProtocolName().equals(protocol)) { - return SSH.canForwardPorts(); + return true; } else { return false; } |