diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2015-11-30 16:01:48 +0100 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2015-11-30 16:01:48 +0100 |
commit | bbda8cdd553bd4f3e70e1013cbe3e0f41490d063 (patch) | |
tree | 06d7a62f41adb2562dda4a4a7baaf2671b6d377c | |
parent | c02af991aeed04f6a19b98dade4666cbed49d9a3 (diff) |
add error state for unavailable tor networktor_support
4 files changed, 15 insertions, 14 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Account.java b/src/main/java/eu/siacs/conversations/entities/Account.java index 062c0d25..75e6b2a0 100644 --- a/src/main/java/eu/siacs/conversations/entities/Account.java +++ b/src/main/java/eu/siacs/conversations/entities/Account.java @@ -83,7 +83,7 @@ public class Account extends AbstractEntity { REGISTRATION_NOT_SUPPORTED(true), SECURITY_ERROR(true), INCOMPATIBLE_SERVER(true), - DNS_TIMEOUT(true); + TOR_NOT_AVAILABLE(true); private final boolean isError; @@ -127,8 +127,8 @@ public class Account extends AbstractEntity { return R.string.account_status_security_error; case INCOMPATIBLE_SERVER: return R.string.account_status_incompatible_server; - case DNS_TIMEOUT: - return R.string.account_status_dns_timeout; + case TOR_NOT_AVAILABLE: + return R.string.account_status_tor_unavailable; default: return R.string.account_status_unknown; } diff --git a/src/main/java/eu/siacs/conversations/utils/SocksSocketFactory.java b/src/main/java/eu/siacs/conversations/utils/SocksSocketFactory.java index 6d9340ab..768e9f17 100644 --- a/src/main/java/eu/siacs/conversations/utils/SocksSocketFactory.java +++ b/src/main/java/eu/siacs/conversations/utils/SocksSocketFactory.java @@ -1,14 +1,11 @@ package eu.siacs.conversations.utils; -import android.util.Log; - 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.UnknownHostException; import java.nio.ByteBuffer; import eu.siacs.conversations.Config; @@ -37,7 +34,11 @@ public class SocksSocketFactory { public static Socket createSocket(InetSocketAddress address, String destination, int port) throws IOException { Socket socket = new Socket(); - socket.connect(address, Config.CONNECT_TIMEOUT * 1000); + try { + socket.connect(address, Config.CONNECT_TIMEOUT * 1000); + } catch (IOException e) { + throw new SocksProxyNotFoundException(); + } createSocksConnection(socket, destination, port); return socket; } @@ -49,4 +50,8 @@ public class SocksSocketFactory { static class SocksConnectionException extends IOException { } + + public static class SocksProxyNotFoundException extends IOException { + + } } diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 388f6572..9ec4d9bb 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -29,7 +29,6 @@ import java.net.InetSocketAddress; import java.net.Socket; import java.net.UnknownHostException; import java.net.URL; -import java.nio.ByteBuffer; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.Principal; @@ -318,8 +317,8 @@ public class XmppConnection implements Runnable { this.changeStatus(Account.State.UNAUTHORIZED); } catch (final UnknownHostException | ConnectException e) { this.changeStatus(Account.State.SERVER_NOT_FOUND); - } catch (final DnsTimeoutException e) { - this.changeStatus(Account.State.DNS_TIMEOUT); + } catch (final SocksSocketFactory.SocksProxyNotFoundException e) { + this.changeStatus(Account.State.TOR_NOT_AVAILABLE); } catch (final IOException | XmlPullParserException | NoSuchAlgorithmException e) { Log.d(Config.LOGTAG, account.getJid().toBareJid().toString() + ": " + e.getMessage()); this.changeStatus(Account.State.OFFLINE); @@ -1327,9 +1326,6 @@ public class XmppConnection implements Runnable { } - private class DnsTimeoutException extends IOException { - - } public enum Identity { FACEBOOK, SLACK, diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index eaff3534..9f257363 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -521,7 +521,7 @@ <string name="download_failed_could_not_connect">Download failed: Could not connect to host</string> <string name="pref_use_white_background">Use white background</string> <string name="pref_use_white_background_summary">Show received messages as black text on a white background</string> - <string name="account_status_dns_timeout">Timeout in DNS</string> + <string name="account_status_tor_unavailable">TOR network unavailable</string> <string name="server_info_broken">Broken</string> <string name="pref_presence_settings">Presence settings</string> <string name="pref_away_when_screen_off">Away when screen is off</string> |