From what I’ve found through google, and through my own usage of Smack,
for some time XMPPConnections login method (using username and password)
results in a NullpointerException, when Smack is used to connect to other servers but Openfire.
This is what the Stacktrace looks like:
java.lang.NullPointerException at org.jivesoftware.smack.util.Base64.encodeBytes(Base64.java:638) at org.jivesoftware.smack.sasl.SASLMechanism.challengeReceived(SASLMechanism.java:152) at org.jivesoftware.smack.SASLAuthentication.challengeReceived(SASLAuthentication.java:492) at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:338) at org.jivesoftware.smack.PacketReader.access$0(PacketReader.java:266) at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:76)
From what I could figure out, the point is, that Base64.encodeBytes needs a byte[] passed,
but gets null from SASLMechanism.challengeReceived.
This Problem is easily fixed by adding the following small check into line 634 org.jivesoftware.smack.util.Base64.encodeBytes(byte[] source, int options) :
public static String encodeBytes( byte[] source, int options )
{
if(source == null)
source = new byte[0];
return encodeBytes( source, 0, source.length, options );
} // end encodeBytes
I was just wondering if there is a particular reason for this issue being open for some time now,
and how or if I can help fixing it; For I believe it bothers some people.
Thanks for your time