aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/org/connectbot/service/Relay.java2
-rw-r--r--src/org/connectbot/service/TerminalBridge.java18
-rw-r--r--src/org/connectbot/service/TerminalManager.java4
-rw-r--r--src/org/connectbot/transport/AbsTransport.java2
-rw-r--r--src/org/connectbot/transport/SSH.java8
-rw-r--r--src/org/connectbot/transport/TransportFactory.java2
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;
}