From c682091a47f8638b6ab404341c9bf69ef22c2010 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Mon, 12 Jan 2015 15:38:56 +0100 Subject: [PATCH] Fix SASL EXTERNAL with client cert provided JID isAnonymous() is now a bit weakened since it also considers allowNullorEmptyUsername. SaslExternalMechanism of smack-sasl-provided now also doesn't throw an UnsupportedOperationException. Follow up on 7e4e3699a17d84950717b8b6df9e93f2215d35ac --- .../java/org/jivesoftware/smack/AbstractXMPPConnection.java | 3 ++- .../smack/sasl/provided/SASLExternalMechanism.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java index 3855b0995..d446b78b3 100644 --- a/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java +++ b/smack-core/src/main/java/org/jivesoftware/smack/AbstractXMPPConnection.java @@ -532,7 +532,8 @@ public abstract class AbstractXMPPConnection implements XMPPConnection { @Override public final boolean isAnonymous() { - return config.getUsername() == null && usedUsername == null; + return config.getUsername() == null && usedUsername == null + && !config.allowNullOrEmptyUsername; } private String serviceName; diff --git a/smack-sasl-provided/src/main/java/org/jivesoftware/smack/sasl/provided/SASLExternalMechanism.java b/smack-sasl-provided/src/main/java/org/jivesoftware/smack/sasl/provided/SASLExternalMechanism.java index 1bfd92494..d8997789b 100644 --- a/smack-sasl-provided/src/main/java/org/jivesoftware/smack/sasl/provided/SASLExternalMechanism.java +++ b/smack-sasl-provided/src/main/java/org/jivesoftware/smack/sasl/provided/SASLExternalMechanism.java @@ -34,7 +34,8 @@ public class SASLExternalMechanism extends SASLMechanism { @Override protected void authenticateInternal(CallbackHandler cbh) throws SmackException { - throw new UnsupportedOperationException("CallbackHandler not (yet) supported"); + // Do nothing. Auth will be done external to Smack and which will receive the localpart + // after the resource binding } @Override