diff options
author | Christian Schneppe <christian@pix-art.de> | 2016-05-27 20:44:02 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2016-05-27 20:44:02 +0200 |
commit | 25547747b37770b6ca8227c784488dd4deb5436f (patch) | |
tree | 04274e9063bd17c8d09b1d4663f035d0d8a2ae8f /src/main/java/eu/siacs/conversations/xmpp | |
parent | 5edcb7714985e24e0a068eb0970135170f9a17ed (diff) | |
parent | 25f6651848b67d225967cf1bb35e037c998a5682 (diff) |
Merge remote-tracking branch 'refs/remotes/siacs/master'
Diffstat (limited to 'src/main/java/eu/siacs/conversations/xmpp')
-rw-r--r-- | src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index b42be17b9..a07267e71 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -184,14 +184,21 @@ public class XmppConnection implements Runnable { account.setOption(Account.OPTION_REGISTER, false); forceCloseSocket(); changeStatus(Account.State.REGISTRATION_SUCCESSFUL); - } else if (packet.hasChild("error") - && (packet.findChild("error").hasChild("conflict"))) { - forceCloseSocket(); - changeStatus(Account.State.REGISTRATION_CONFLICT); } else { - forceCloseSocket(); - changeStatus(Account.State.REGISTRATION_FAILED); - Log.d(Config.LOGTAG, packet.toString()); + Element error = packet.findChild("error"); + if (error != null && error.hasChild("conflict")) { + forceCloseSocket(); + changeStatus(Account.State.REGISTRATION_CONFLICT); + } else if (error != null + && "wait".equals(error.getAttribute("type")) + && error.hasChild("resource-constraint")) { + forceCloseSocket(); + changeStatus(Account.State.REGISTRATION_PLEASE_WAIT); + } else { + forceCloseSocket(); + changeStatus(Account.State.REGISTRATION_FAILED); + Log.d(Config.LOGTAG, packet.toString()); + } } } }; |