Smack 4.4.6: Jingle File Transfer handling of invalid InternetAddress host

The problem happened while testing aTalk running on an android virtual device during jingle file transfer process.

The “session-accept” in reply to a “session-initiate” from the AVD may contain a candidate with an invalid host string e.g.

<candidate cid='T81Y91MAHL32U44N' host='fe80::bc17:dfff:fea5:c0fb%dummy0' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/>

This causes IllegalArgumentException to be thrown from the underlying InternetAddress#from(String host) on executed the below statement in JingleS5BTransportProvider#parse()

cb.setHost(parser.getAttributeValue(null, ATTR_HOST));

This leads to the whole jingle file transfer ended abruptly. Just wonder if it is better just to ignore an invalid candidate and proceed to use the rest.
Please advice.

2022-11-10 09:14:02.053 15453-15797/org.atalk.android D/SMACK: RECV (0): 
    <iq xml:lang='en-US' to='swordfish@atalk.sytes.net/atalk' from='abc123@atalk.sytes.net/atalk' type='set' id='8NZ1K-16'>
      <jingle xmlns='urn:xmpp:jingle:1' responder='abc123@atalk.sytes.net/atalk' action='session-accept' sid='DSJL6ST2C4TZCN8BPDLP359V'>
        <content name='cont-LNSU2JHPJR7YBIZL' creator='initiator' senders='initiator'>
          <description xmlns='urn:xmpp:jingle:apps:file-transfer:5'>
            <file>
              <date>
                2022-07-17T03:49:58.000+00:00
              </date>
              <media-type>
                image/jpeg
              </media-type>
              <name>
                swordfish.jpg
              </name>
              <size>
                7914
              </size>
              <hash xmlns='urn:xmpp:hashes:2' algo='sha3-256'>
                JPEMSj5h1xvkfRsQMdXP2kbyI8g9z9FL67W8sdmECQc=
              </hash>
            </file>
          </description>
          <transport xmlns='urn:xmpp:jingle:transports:s5b:1' dstaddr='9c1847c18549ac34ba71a39561da23c9700a3fb9' mode='tcp' sid='ILVBAECZEPS9FLSHLM9KTTDU'>
            <candidate cid='Z52R8ISJGKGT6ELI' host='10.0.2.16' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/>
            <candidate cid='T81Y91MAHL32U44N' host='fe80::bc17:dfff:fea5:c0fb%dummy0' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/>
            <candidate cid='KX5KU4J92JH74ZU9' host='fe80::5054:ff:fe12:3456%eth0' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/>
            <candidate cid='W8CZLK4YQ26GAS2U' host='fec0::5054:ff:fe12:3456' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/>
            <candidate cid='UI1M2IPG1STYBCXW' host='fe80::a28:faa6:dcda:6530%wlan0' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/>
            <candidate cid='6U5Q2FRDECSYVCP1' host='fec0::9fd5:5740:9435:b80f' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/>
            <candidate cid='5GWY3FXMAI9B23GQ' host='fec0::15c5:cccb:cd43:d69e' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/>
            <candidate cid='R9PD848ESL9KUVIF' host='10.0.2.15' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/>
            <candidate cid='2VVWG3ZTEW2L57Z6' host='42.60.99.4' jid='proxy.atalk.sytes.net/55238004' port='7777' priority='0' type='proxy'/>
          </transport>
          <security xmlns='urn:xmpp:jingle:jet:0' name='cont-LNSU2JHPJR7YBIZL' cipher='urn:xmpp:ciphers:aes-256-gcm-nopadding:0' type='eu.siacs.conversations.axolotl'>
            <encrypted xmlns='eu.siacs.conversations.axolotl'>
              <header sid='646419288'>
                <key rid='1201354019'>
                  MwohBV+/wsXuwLlsJF9teNnr/8Qf7aW4RLb0TGWGTx7gQfY1EAQYBCIwmjIkgsC49uQP8qonfF0agbOdBsQOe2R8OWk3NaAq5A1gQRJg9LBZ/HYsR5wJIUSrySplzbLbp6s=
                </key>
                <key prekey='true' rid='2028266418'>
                  MwgaEiEFTNzLSATRaz15XmbGNW99qmT8a9zBo7E5IGmvCbGyZGAaIQV/iXNtFvWTc9FCFRZWKDFf9sFUvLBXNpJreYZymc6RNyJiMwohBbsaeoazry0RhxneaKLcYaP6lKvo/2/6aSTWklOVSCZTEAkYACIwtpKox6UR0f9wGEUgCi3LMZmASbKScucm8yA/h9TP3WuF6FUevbBdRnVpgmqJ1Jfwe8Qpzkdia80oADAB
                </key>
                <iv>
                  ScHj1EAMzda0+OFu
                </iv>
              </header>
              <payload>
                KeL2vf5m4O6DDeQy2Qf06lAl4qECtsG8PUFfVDJLrS+aMUUSbb68ES6kIQqmseI9p+7BYHnxaQHu1MRz
              </payload>
            </encrypted>
          </security>
        </content>
      </jingle>
    </iq>
2022-11-10 09:14:02.098 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1: UnparseableStanza Error: <candidate xmlns='urn:xmpp:jingle:transports:s5b:1' cid='T81Y91MAHL32U44N' host='fe80::bc17:dfff:fea5:c0fb%dummy0' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/><candidate xmlns='urn:xmpp:jingle:transports:s5b:1' cid='KX5KU4J92JH74ZU9' host='fe80::5054:ff:fe12:3456%eth0' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/><candidate xmlns='urn:xmpp:jingle:transports:s5b:1' cid='W8CZLK4YQ26GAS2U' host='fec0::5054:ff:fe12:3456' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/><candidate xmlns='urn:xmpp:jingle:transports:s5b:1' cid='UI1M2IPG1STYBCXW' host='fe80::a28:faa6:dcda:6530%wlan0' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/><candidate xmlns='urn:xmpp:jingle:transports:s5b:1' cid='6U5Q2FRDECSYVCP1' host='fec0::9fd5:5740:9435:b80f' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/><candidate xmlns='urn:xmpp:jingle:transports:s5b:1' cid='5GWY3FXMAI9B23GQ' host='fec0::15c5:cccb:cd43:d69e' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/><candidate xmlns='urn:xmpp:jingle:transports:s5b:1' cid='R9PD848ESL9KUVIF' host='10.0.2.15' jid='abc123@atalk.sytes.net/atalk' port='7777' priority='100' type='proxy'/><candidate xmlns='urn:xmpp:jingle:transports:s5b:1' cid='2VVWG3ZTEW2L57Z6' host='42.60.99.4' jid='proxy.atalk.sytes.net/55238004' port='7777' priority='0' type='proxy'/></transport><security xmlns='urn:xmpp:jingle:jet:0' name='cont-LNSU2JHPJR7YBIZL' cipher='urn:xmpp:ciphers:aes-256-gcm-nopadding:0' type='eu.siacs.conversations.axolotl'><encrypted><header sid='646419288'><key rid='1201354019'>MwohBV+/wsXuwLlsJF9teNnr/8Qf7aW4RLb0TGWGTx7gQfY1EAQYBCIwmjIkgsC49uQP8qonfF0agbOdBsQOe2R8OWk3NaAq5A1gQRJg9LBZ/HYsR5wJIUSrySplzbLbp6s=</key><key prekey='true' rid='2028266418'>MwgaEiEFTNzLSATRaz15XmbGNW99qmT8a9zBo7E5IGmvCbGyZGAaIQV/iXNtFvWTc9FCFRZWKDFf9sFUvLBXNpJreYZymc6RNyJiMwohBbsaeoazry0RhxneaKLcYaP6lKvo/2/6aSTWklOVSCZTEAkYACIwtpKox6UR0f9wGEUgCi3LMZmASbKScucm8yA/h9TP3WuF6FUevbBdRnVpgmqJ1Jfwe8Qpzkdia80oADAB</key><key prekey='true' rid='660938212'>MwhdEiEFgv+XsDjR0XUzXgn7w5VUxrDf/GBhLM6eE862AK5h6FwaIQV/iXNtFvWTc9FCFRZWKDFf9sFUvLBXNpJreYZymc6RNyJiMwohBcv7payU2105XuyDq9bIYDWKoDXHRcSyEu4ro6dDlqoNEAkYACIweF4apqBvbT/3jenLfjvQab7kECXgBlgXeiHVym2vcrLTNna2EJkX7bKtyBixmDa+Wd7sRFIzj/IoADAB</key><key rid='1312485350'>MwohBUlErXh5tSitGfUM4QT7+/uhVDuo5B0AV9/13WN4tE9XEAcYACIwiqUQ/k3Xjbx02Fkra7/5c7K6tFYDS3h5lGi7UgT5H40E0EJqBzwN3cONav50fO5u7VypIepiQ+M=</key><key prekey='true' rid='459141212'>MwgXEiEFJxONGyq5CpoSBY7v0HPy4xZhdPH5mcEkuZfWoIOHhRwaIQV/iXNtFvWTc9FCFRZWKDFf9sFUvLBXNpJreYZymc6RNyJiMwohBVRKqiGYCNz6gbgG8ZT+y/Uek3JSoImvhC93e+vvZLI/EAkYACIwBu7odEW2tSYsdp1fVAALDv+QcqTvFB3Q0h46vrTZrtAk8fQVPy499i68xlVIW5YhL4zz346dXPkoADAB</key><key prekey='true' rid='1605373784'>MwgtEiEFlAx5Ae9wZbO5kU7mk0U41pw73WczOomWVf49GXRcfyUaIQV/iXNtFvWTc9FCFRZWKDFf9sFUvLBXNpJreYZymc6RNyJiMwohBXUcxaBEM1tjx2NV08Q5kxADIbzmmgcuUOfbfoLdkd0oEAkYACIwJLbfcnG8rJorrW3h5x4a27U1c4f5xmNJsdzPIN4CA95817P5MUJxRXKwP1KM2VhYLZ6/wpGlH58oADAB</key><iv>ScHj1EAMzda0+OFu</iv></header><payload>KeL2vf5m4O6DDeQy2Qf06lAl4qECtsG8PUFfVDJLrS+aMUUSbb68ES6kIQqmseI9p+7BYHnxaQHu1MRz</payload></encrypted></security></content></jingle></iq>: java.net.UnknownHostException: Unable to resolve host "fe80::bc17:dfff:fea5:c0fb%dummy0": No address associated with hostname
2022-11-10 09:14:02.098 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1: java.lang.IllegalArgumentException: java.net.UnknownHostException: Unable to resolve host "fe80::bc17:dfff:fea5:c0fb%dummy0": No address associated with hostname
2022-11-10 09:14:02.098 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.minidns.util.InetAddressUtil.ipv6From(InetAddressUtil.java:41)
2022-11-10 09:14:02.098 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.util.InternetAddress$Ipv6.<init>(InternetAddress.java:137)
2022-11-10 09:14:02.098 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.util.InternetAddress$Ipv6.<init>(InternetAddress.java:132)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.util.InternetAddress.from(InternetAddress.java:73)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportCandidate$Builder.setHost(JingleS5BTransportCandidate.java:179)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smackx.jingle.transports.jingle_s5b.provider.JingleS5BTransportProvider.parse(JingleS5BTransportProvider.java:72)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smackx.jingle.transports.jingle_s5b.provider.JingleS5BTransportProvider.parse(JingleS5BTransportProvider.java:44)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.provider.Provider.parse(Provider.java:53)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.provider.Provider.parse(Provider.java:43)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smackx.jingle.provider.JingleProvider.parseJingleContent(JingleProvider.java:214)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smackx.jingle.provider.JingleProvider.parse(JingleProvider.java:100)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smackx.jingle.provider.JingleProvider.parse(JingleProvider.java:59)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.provider.IqProvider.parse(IqProvider.java:40)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.util.PacketParserUtils.parseIQ(PacketParserUtils.java:555)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.util.PacketParserUtils.parseStanza(PacketParserUtils.java:113)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.AbstractXMPPConnection.parseAndProcessStanza(AbstractXMPPConnection.java:1450)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$1000(XMPPTCPConnection.java:131)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:972)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$700(XMPPTCPConnection.java:916)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:939)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at java.lang.Thread.run(Thread.java:920)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1: Caused by: java.net.UnknownHostException: Unable to resolve host "fe80::bc17:dfff:fea5:c0fb%dummy0": No address associated with hostname
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:156)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at java.net.InetAddress.getByName(InetAddress.java:1106)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at org.minidns.util.InetAddressUtil.ipv6From(InetAddressUtil.java:39)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1: 	... 20 more
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1: Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at libcore.io.Linux.android_getaddrinfo(Native Method)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:136)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at libcore.io.BlockGuardOs.android_getaddrinfo(BlockGuardOs.java:221)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:136)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1:     at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:135)
2022-11-10 09:14:02.099 15453-15797/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2190)#lambda$initSmackDefaultSettings$1: 	... 23 more

On further investigation, found the problem is originated in “session-initiate” sending stanza, in which the <transport> element may contain an invalid candidates e.g. /fe80::1004:3eff:fe07:ba63%wlan0. This problem happen on all android devices including the Android Virtual Device.

In smack implementation, the host addressed are retrieved in the Sock5Proxy.java class using

networkInterface.getInterfaceAddresses();

where android may return the InetAddress, but trailing with its network source e.g.

/fe80::1004:3eff:fe07:ba63%wlan0

This InetAddress is used as it in creating the StreamHost, and get included in the transport-candidate,
leading to the above observed problem.

I am not sure if “/fe80::1004:3eff:fe07:ba63%wlan0” is considered as one of the accepted InetAddress format. If so, then smack needs to take action to strip the unwanted info in the returned InetAddress before use.

Update: per IPv6 Scoped Address Architecture
11. Textual Representation
Inet6Address may contain an %<zone_id>.

Meantime I have raised as a bug with the android team.
Android InterfaceAddress class returns an invalid InetAddress in method getAddress()

aTalk will proceed to fix this problem in smack source, while waiting for android team reply which normal will take months/years.

    Socks5Proxy() {
        this.serverProcess = new Socks5ServerProcess();

        allowAllConnections = false;

        Enumeration<NetworkInterface> networkInterfaces;
        try {
            networkInterfaces = NetworkInterface.getNetworkInterfaces();
        } catch (SocketException e) {
            throw new IllegalStateException(e);
        }
        Set<InetAddress> localAddresses = new HashSet<>();
        for (NetworkInterface networkInterface : Collections.list(networkInterfaces)) {
            List<InterfaceAddress> interfaceAddresses = networkInterface.getInterfaceAddresses();
            for (InterfaceAddress interfaceAddress : interfaceAddresses) {
                // String host = interfaceAddress.getAddress().getHostName().split("%")[0];
                localAddresses.add(interfaceAddress.getAddress());
            }
        }
        if (localAddresses.isEmpty()) {
            throw new IllegalStateException("Could not determine any local internet address");
        }
        replaceLocalAddresses(localAddresses);
    }

I have raised a bug in:
MiniDNS does not support zone_id in the Inet6Address format as per IPv6 Scoped Address Architecture #129

as for aTalk, it implemented a temporary fix in JingleS5BTransportCondiate,

        public Builder setHost(String host)  {
            host = host.split("%")[0];
            InternetAddress inetAddress = InternetAddress.from(host);
            return setHost(inetAddress);
        }

and in ByteStream class i.e.

        public StreamHost(final Jid jid, final String address, int port) {
            this(jid, InternetAddress.from(address.split("%")[0]), port);
        }

On more testing with Conversations, it seems Conversations does not include the /<zone_id> in the transport-candidate. May be aTalk should also strip the <zone_id> in the transport-candidate in all the sock5Stream file exchange.

I feel that the <zone_id> should not be part of host attribute value in the transport-candidate. Although <zone_id> may be useful for local decision making, it does not provide any useful info for the remote client.

I see all the examples given in XEP-0260 does not contain <zone_id>, nor it specifically mention this.
So aTalk has excluded this info in the sending transport-candidate element.

Below is the modification for aTalk in the Bytestream.java class.

        /**
         * Default constructor.
         *
         * @param jid The JID of the stream host.
         * @param address The internet address of the stream host.
         * @param port port of the stream host.
         */
        public StreamHost(final Jid jid, final String address, int port) {
            this(jid, InternetAddress.from(address.split("%")[0]), port);
        }

        public StreamHost(Jid jid, InetAddress address, int port) {
            this(jid, InternetAddress.from(address.getHostAddress().split("%")[0]), port);
        }

Do you have the full stacktrace of this Exception? The stacktrace could prove tremendous insightful.

Actually the exception is thrown from minidns-core#InetAddressUtil class, while executing method

public static Inet6Address ipv6From(CharSequence cs)

Below is the captured thread, not sure if this if of any use.

"Smack Reader (0)@26805" daemon prio=5 tid=0xcc nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	  at org.minidns.util.InetAddressUtil.ipv6From(InetAddressUtil.java:40)
	  at org.jivesoftware.smack.util.InternetAddress$Ipv6.<init>(InternetAddress.java:137)
	  at org.jivesoftware.smack.util.InternetAddress$Ipv6.<init>(InternetAddress.java:132)
	  at org.jivesoftware.smack.util.InternetAddress.from(InternetAddress.java:73)
	  at org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportCandidate$Builder.setHost(JingleS5BTransportCandidate.java:180)
	  at org.jivesoftware.smackx.jingle.transports.jingle_s5b.provider.JingleS5BTransportProvider.parse(JingleS5BTransportProvider.java:72)
	  at org.jivesoftware.smackx.jingle.transports.jingle_s5b.provider.JingleS5BTransportProvider.parse(JingleS5BTransportProvider.java:44)
	  at org.jivesoftware.smack.provider.Provider.parse(Provider.java:53)
	  at org.jivesoftware.smack.provider.Provider.parse(Provider.java:43)
	  at org.jivesoftware.smackx.jingle.provider.JingleProvider.parseJingleContent(JingleProvider.java:214)
	  at org.jivesoftware.smackx.jingle.provider.JingleProvider.parse(JingleProvider.java:100)
	  at org.jivesoftware.smackx.jingle.provider.JingleProvider.parse(JingleProvider.java:59)
	  at org.jivesoftware.smack.provider.IqProvider.parse(IqProvider.java:40)
	  at org.jivesoftware.smack.util.PacketParserUtils.parseIQ(PacketParserUtils.java:555)
	  at org.jivesoftware.smack.util.PacketParserUtils.parseStanza(PacketParserUtils.java:113)
	  at org.jivesoftware.smack.AbstractXMPPConnection.parseAndProcessStanza(AbstractXMPPConnection.java:1450)
	  at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$1000(XMPPTCPConnection.java:131)
	  at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:972)
	  at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.access$700(XMPPTCPConnection.java:916)
	  at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader$1.run(XMPPTCPConnection.java:939)
	  at java.lang.Thread.run(Thread.java:920)

"main@28797" prio=5 tid=0x2 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Signal Catcher@28798" daemon prio=10 tid=0x8a nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"ADB-JDWP Connection Control Thread@28799" daemon prio=0 tid=0x8b nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"Jit thread pool worker thread 0@28800" daemon prio=5 tid=0x8d nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"HeapTaskDaemon@28801" daemon prio=5 tid=0x8c nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"ReferenceQueueDaemon@28802" daemon prio=5 tid=0x8e nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"FinalizerDaemon@28803" daemon prio=5 tid=0x8f nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"FinalizerWatchdogDaemon@28804" daemon prio=5 tid=0x90 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"Binder:12573_1@28805" prio=5 tid=0x91 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Binder:12573_2@28806" prio=5 tid=0x92 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Binder:12573_3@28807" prio=5 tid=0x94 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Binder:12573_4@28808" prio=5 tid=0x95 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Profile Saver@21011" daemon prio=5 tid=0x99 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"queued-work-looper-data@21014" prio=5 tid=0x9c nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"Chrome_ProcessLauncherThread@28809" prio=5 tid=0xa1 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"GoogleApiHandler@21472" prio=5 tid=0xa3 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Chrome_IOThread@21553" prio=7 tid=0xa4 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"ThreadPoolSingl@21586" prio=5 tid=0xa7 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"PlatformServiceBridgeHandlerThread@21587" prio=5 tid=0xa6 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"CleanupReference@21718" daemon prio=5 tid=0xa9 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"Chrome_InProcGpuThread@21903" prio=7 tid=0xaa nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"RenderThread@21904" daemon prio=7 tid=0xab nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"queued-work-looper@22520" prio=5 tid=0xad nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"ThreadPoolForeg@22523" prio=5 tid=0xae nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"hwuiTask0@22971" daemon prio=6 tid=0xaf nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"hwuiTask1@22972" daemon prio=6 tid=0xb0 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Binder:12573_5@23072" prio=5 tid=0xb3 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"org.atalk.impl.osgi.framework.AsyncExecutor@23203" daemon prio=5 tid=0xb6 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"Binder:12573_6@23891" prio=5 tid=0xb7 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Binder:12573_7@23899" prio=5 tid=0xb8 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Binder:12573_8@23982" prio=5 tid=0xb9 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Binder:12573_9@24013" prio=5 tid=0xba nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Binder:12573_A@24017" prio=5 tid=0xbb nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Timer-0@25035" daemon prio=5 tid=0xc0 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"Smack DefaultReactor Thread #0@26075" daemon prio=5 tid=0xc2 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Smack DefaultReactor Thread #1@26076" daemon prio=5 tid=0xc3 nid=NA waiting for monitor entry
  java.lang.Thread.State: BLOCKED
	 Incompatible thread state: thread not suspended

"Thread-16@26774" daemon prio=5 tid=0xc9 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"Smack Writer (0)@26806" daemon prio=5 tid=0xcb nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"pool-6-thread-1@27423" prio=5 tid=0xd7 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"Smack Local SOCKS5 Proxy [ServerSocket[addr=::/::,localport=7777]]@27561" daemon prio=5 tid=0xdd nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"MemoryInfra@27595" prio=5 tid=0xe0 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"AsyncTask #2@27781" prio=5 tid=0xe4 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"glide-active-resources@28139" prio=5 tid=0xe7 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"ConnectivityThread@28350" prio=5 tid=0xe8 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"glide-disk-cache-thread-0@28396" prio=5 tid=0xe9 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"glide-source-thread-0@28417" prio=5 tid=0xea nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"glide-source-thread-1@28440" prio=5 tid=0xeb nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"glide-animation-thread-0@28456" prio=5 tid=0xee nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"glide-animation-thread-1@28457" prio=5 tid=0xef nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"pool-7-thread-1@28503" prio=5 tid=0xf1 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended

"AudioPortEventHandler@28533" prio=5 tid=0xf5 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
	 Incompatible thread state: thread not suspended

"Timer-9@28550" daemon prio=5 tid=0x102 nid=NA waiting
  java.lang.Thread.State: WAITING
	 Incompatible thread state: thread not suspended
// ========== aTalk logcat ==============
2022-11-24 08:59:49.970 12573-12817/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2193)#lambda$initSmackDefaultSettings$1: java.lang.IllegalArgumentException: java.net.UnknownHostException: Unable to resolve host "fe80::641a:cdff:febd:d665%dummy0": No address associated with hostname
2022-11-24 08:59:49.970 12573-12817/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2193)#lambda$initSmackDefaultSettings$1:     at org.minidns.util.InetAddressUtil.ipv6From(InetAddressUtil.java:41)
2022-11-24 08:59:49.970 12573-12817/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2193)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.util.InternetAddress$Ipv6.<init>(InternetAddress.java:137)
2022-11-24 08:59:49.970 12573-12817/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2193)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.util.InternetAddress$Ipv6.<init>(InternetAddress.java:132)
2022-11-24 08:59:49.970 12573-12817/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2193)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smack.util.InternetAddress.from(InternetAddress.java:73)
2022-11-24 08:59:49.970 12573-12817/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2193)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smackx.jingle.transports.jingle_s5b.elements.JingleS5BTransportCandidate$Builder.setHost(JingleS5BTransportCandidate.java:180)
2022-11-24 08:59:49.970 12573-12817/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2193)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smackx.jingle.transports.jingle_s5b.provider.JingleS5BTransportProvider.parse(JingleS5BTransportProvider.java:72)
2022-11-24 08:59:49.970 12573-12817/org.atalk.android W/(ProtocolProviderServiceJabberImpl.java:2193)#lambda$initSmackDefaultSettings$1:     at org.jivesoftware.smackx.jingle.transports.jingle_s5b.provider.JingleS5BTransportProvider.parse(JingleS5BTransportProvider.java:44)

Proposed fix

Created SMACK-929.

This topic was automatically closed 100 days after the last reply. New replies are no longer allowed.