aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2017-05-17 22:01:42 +0200
committerChristian Schneppe <christian@pix-art.de>2017-05-17 22:01:42 +0200
commitcf613ce4a0b1f5b37bb2c33d16e961e02fb9b526 (patch)
treeb7b16b95820e08e328b233e22da97a4c575a657b /src/main
parent5a60dab1d5ead7a94d9d86cecc563210fed4b4bf (diff)
differentiate starttls failure and sasl failure
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/de/pixart/messenger/utils/Namespace.java2
-rw-r--r--src/main/java/de/pixart/messenger/xmpp/XmppConnection.java31
2 files changed, 19 insertions, 14 deletions
diff --git a/src/main/java/de/pixart/messenger/utils/Namespace.java b/src/main/java/de/pixart/messenger/utils/Namespace.java
index 79eb02961..25470d66b 100644
--- a/src/main/java/de/pixart/messenger/utils/Namespace.java
+++ b/src/main/java/de/pixart/messenger/utils/Namespace.java
@@ -11,4 +11,6 @@ public final class Namespace {
public static final String MAM_LEGACY = "urn:xmpp:mam:0";
public static final String IDLE = "urn:xmpp:idle:1";
public static final String OOB = "jabber:x:oob";
+ public static final String SASL = "urn:ietf:params:xml:ns:xmpp-sasl";
+ public static final String TLS = "urn:ietf:params:xml:ns:xmpp-tls";
}
diff --git a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
index b3aa46738..75eb63e5e 100644
--- a/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
+++ b/src/main/java/de/pixart/messenger/xmpp/XmppConnection.java
@@ -562,21 +562,25 @@ public class XmppConnection implements Runnable {
break;
} else if (nextTag.isStart("failure")) {
final Element failure = tagReader.readElement(nextTag);
- final String text = failure.findChildContent("text");
- if (failure.hasChild("account-disabled")
- && text != null
- && text.contains("renew")
- && Config.MAGIC_CREATE_DOMAIN != null
- && text.contains(Config.MAGIC_CREATE_DOMAIN)) {
- throw new StateChangingException(Account.State.PAYMENT_REQUIRED);
+ if (Namespace.SASL.equals(failure.getNamespace())) {
+ final String text = failure.findChildContent("text");
+ if (failure.hasChild("account-disabled")
+ && text != null
+ && text.contains("renew")
+ && Config.MAGIC_CREATE_DOMAIN != null
+ && text.contains(Config.MAGIC_CREATE_DOMAIN)) {
+ throw new StateChangingException(Account.State.PAYMENT_REQUIRED);
+ } else {
+ throw new StateChangingException(Account.State.UNAUTHORIZED);
+ }
+ } else if (Namespace.TLS.equals(failure.getNamespace())) {
+ throw new StateChangingException(Account.State.TLS_ERROR);
} else {
- throw new StateChangingException(Account.State.UNAUTHORIZED);
+ throw new StateChangingException(Account.State.INCOMPATIBLE_SERVER);
}
} else if (nextTag.isStart("challenge")) {
final String challenge = tagReader.readElement(nextTag).getContent();
- final Element response = new Element("response");
- response.setAttribute("xmlns",
- "urn:ietf:params:xml:ns:xmpp-sasl");
+ final Element response = new Element("response", Namespace.SASL);
try {
response.setContent(saslMechanism.getResponse(challenge));
} catch (final SaslMechanism.AuthenticationException e) {
@@ -812,7 +816,7 @@ public class XmppConnection implements Runnable {
private void sendStartTLS() throws IOException {
final Tag startTLS = Tag.empty("starttls");
- startTLS.setAttribute("xmlns", "urn:ietf:params:xml:ns:xmpp-tls");
+ startTLS.setAttribute("xmlns", Namespace.TLS);
tagWriter.writeTag(startTLS);
}
@@ -894,8 +898,7 @@ public class XmppConnection implements Runnable {
private void authenticate() throws IOException {
final List<String> mechanisms = extractMechanisms(streamFeatures
.findChild("mechanisms"));
- final Element auth = new Element("auth");
- auth.setAttribute("xmlns", "urn:ietf:params:xml:ns:xmpp-sasl");
+ final Element auth = new Element("auth", Namespace.SASL);
if (mechanisms.contains("EXTERNAL") && account.getPrivateKeyAlias() != null) {
saslMechanism = new External(tagWriter, account, mXmppConnectionService.getRNG());
} else if (mechanisms.contains("SCRAM-SHA-256")) {