From 549be9bb3df86dfd7aea819b8f64508ec55d9322 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 10 May 2016 10:29:02 +0200 Subject: [PATCH] report host-account as account state in UI --- .../eu/siacs/conversations/entities/Account.java | 5 ++++- .../eu/siacs/conversations/xmpp/XmppConnection.java | 12 +++++++++--- src/main/res/values/strings.xml | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Account.java b/src/main/java/eu/siacs/conversations/entities/Account.java index 1a7798b2d..c6b655d0a 100644 --- a/src/main/java/eu/siacs/conversations/entities/Account.java +++ b/src/main/java/eu/siacs/conversations/entities/Account.java @@ -94,7 +94,8 @@ public class Account extends AbstractEntity { SECURITY_ERROR(true), INCOMPATIBLE_SERVER(true), TOR_NOT_AVAILABLE(true), - BIND_FAILURE(true); + BIND_FAILURE(true), + HOST_UNKNOWN(true); private final boolean isError; @@ -142,6 +143,8 @@ public class Account extends AbstractEntity { return R.string.account_status_tor_unavailable; case BIND_FAILURE: return R.string.account_status_bind_failure; + case HOST_UNKNOWN: + return R.string.account_status_host_unknown; default: return R.string.account_status_unknown; } diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 772bfd3da..57dc4ebf3 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -880,6 +880,7 @@ public class XmppConnection implements Runnable { } public void resetEverything() { + resetAttemptCount(); resetStreamId(); clearIqCallbacks(); mStanzaQueue.clear(); @@ -1173,15 +1174,20 @@ public class XmppConnection implements Runnable { private void processStreamError(final Tag currentTag) throws XmlPullParserException, IOException { final Element streamError = tagReader.readElement(currentTag); - if (streamError != null && streamError.hasChild("conflict")) { + if (streamError == null) { + return; + } + Log.d(Config.LOGTAG,account.getJid().toBareJid()+": stream error "+streamError.toString()); + if (streamError.hasChild("conflict")) { final String resource = account.getResource().split("\\.")[0]; account.setResource(resource + "." + nextRandomId()); Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": switching resource due to conflict (" + account.getResource() + ")"); - } else if (streamError != null) { - Log.d(Config.LOGTAG,account.getJid().toBareJid()+": stream error "+streamError.toString()); + } else if (streamError.hasChild("host-unknown")) { + changeStatus(Account.State.HOST_UNKNOWN); } + forceCloseSocket(); } private void sendStartStream() throws IOException { diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index d11e897c8..a5e37e9bf 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -542,6 +542,7 @@ Show received messages as black text on a white background Tor network unavailable Bind failure + Domain not recognized Broken Presence Away when screen is off