We're working with Openfire 4.1.1 and trying to connect with smack, with previous smack version 4.1.9 it was working perfectly. But in order to achieve XEP-0313(MAP), has to update with smack version 4.2.0-rc1.

Here is XMPPTCPConnectionConfiguration,

InetAddress inetAddress = InetAddress.getByName(mServiceName);

//InetAddress inetAddress = InetAddress.getLocalHost();

XMPPTCPConnectionConfiguration xmpptcpConnectionConfiguration =
XMPPTCPConnectionConfiguration.builder()
              .setXmppDomain(mServiceName)
              .setUsernameAndPassword(mUsername, mPassword)
              .setSecurityMode(ConnectionConfiguration.SecurityMode.disabled)
              .setHostAddress(inetAddress)
              .setPort(5222)
              .setDebuggerEnabled(true)
              .setSendPresence(true)
              .setDebuggerEnabled(true)
              .setCompressionEnabled(true)
              .build();

Here mServiceName is local ip address ""192.168.X.X".

And exception,

W/System.err: java.lang.StringIndexOutOfBoundsException: length=0; index=-1
W/System.err:     at java.lang.String.charAt(Native Method)
W/System.err:     at org.jivesoftware.smack.util.dns.HostAddress.<init>(HostAddress.java:48)
W/System.err:     at org.jivesoftware.smack.util.dns.HostAddress.<init>(HostAddress.java:62)
W/System.err:     at org.jivesoftware.smack.AbstractXMPPConnection.populateHostAddresses(AbstractXMP PConnection.java:607)
W/System.err:     at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectUsingConfiguration(XMPPTCPC onnection.java:555)
W/System.err:     at org.jivesoftware.smack.tcp.XMPPTCPConnection.connectInternal(XMPPTCPConnection. java:885)
W/System.err:     at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.ja va:374)
W/System.err:     at com.example.bosleo.chatapp.ChatConnection.connect(ChatConnection.java:141)
W/System.err:     at com.example.bosleo.chatapp.ChatConnectionService.initConnection(ChatConnectionS ervice.java:82)
W/System.err:     at com.example.bosleo.chatapp.ChatConnectionService.access$100(ChatConnectionServi ce.java:20)
W/System.err:     at com.example.bosleo.chatapp.ChatConnectionService$1.run(ChatConnectionService.ja va:105)
W/System.err:     at java.lang.Thread.run(Thread.java:818)

Please check with HostAddress class constructors. May be it's because fdqn value is "".

public HostAddress(int port, InetAddress hostAddress) {
    this("", port, Collections.singletonList(hostAddress));
}
public HostAddress(String fqdn, int port, List<InetAddress> inetAddresses) {

    Objects.requireNonNull(fqdn, "FQDN is null");
    if (port < 0 || port > 65535)
        throw new IllegalArgumentException(
                "Port must be a 16-bit unsiged integer (i.e. between 0-65535. Port was: " + port);
    if (fqdn.charAt(fqdn.length() - 1) == '.') {
        this.fqdn = fqdn.substring(0, fqdn.length() - 1);
    }
    else {
        this.fqdn = fqdn;
    }
    this.port = port;
    if (inetAddresses.isEmpty()) {
        throw new IllegalArgumentException("Must provide at least one InetAddress");
    }
    this.inetAddresses = inetAddresses;
}

Or in case I'm doing something wrong, is there an alternative? Original question is here.

1

There are 1 best solutions below

0
On BEST ANSWER

That's an bug which should be fixed in 4.2.0-rc2. Try 4.2.0-rc2-SNAPSHOT until it is released.