The team requested 5223-Direct TLS and successfully connected using Gajim. When I implemented it using Smack 4.4.8,:
val config = XMPPTCPConnectionConfiguration.builder()
.setUsernameAndPassword(username, pwd)
.setXmppDomain(domain)
.setHost("47.96.37.108")
.setPort(5223)
.setSecurityMode(ConnectionConfiguration.SecurityMode.required)
.setSocketFactory(sslContext.socketFactory)
.setDebuggerFactory(ConsoleDebugger.Factory.INSTANCE)
.build()
val connection = XMPPTCPConnection(config)
the following occurred:
org.jivesoftware.smack.SmackException$SmackWrappedException: java.net.SocketException: Socket is closed
Connection XMPPTCPConnection[not-authenticated] (0) closed with error
java.net.SocketException: Socket is closed
at com.android.org.conscrypt.ConscryptEngineSocket.waitForHandshake(ConscryptEngineSocket.java:624)
at com.android.org.conscrypt.ConscryptEngineSocket.-$$Nest$mwaitForHandshake(Unknown Source:0)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLOutputStream.write(ConscryptEngineSocket.java:697)
at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:233)
at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:309)
at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:313)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:153)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:248)
at org.jivesoftware.smack.util.ObservableWriter.flush(ObservableWriter.java:51)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.writePackets(XMPPTCPConnection.java:1367)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter.access$4200(XMPPTCPConnection.java:1172)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketWriter$1.run(XMPPTCPConnection.java:1222)
at java.lang.Thread.run(Thread.java:1019)
Connection was already disconnected when attempting to handle java.net.SocketException: Connection reset
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:191)
at java.net.SocketInputStream.read(SocketInputStream.java:143)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket(ConscryptEngineSocket.java:983)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket(ConscryptEngineSocket.java:947)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.-$$Nest$mprocessDataFromSocket(Unknown Source:0)
at com.android.org.conscrypt.ConscryptEngineSocket.doHandshake(ConscryptEngineSocket.java:236)
at com.android.org.conscrypt.ConscryptEngineSocket.startHandshake(ConscryptEngineSocket.java:218)
at com.android.org.conscrypt.ConscryptEngineSocket.waitForHandshake(ConscryptEngineSocket.java:609)
at com.android.org.conscrypt.ConscryptEngineSocket.-$$Nest$mwaitForHandshake(Unknown Source:0)
at com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read(ConscryptEngineSocket.java:833)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:291)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:355)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:181)
at java.io.InputStreamReader.read(InputStreamReader.java:177)
at java.io.BufferedReader.read1(BufferedReader.java:221)
at java.io.BufferedReader.read(BufferedReader.java:298)
at org.jivesoftware.smack.util.ObservableReader.read(ObservableReader.java:42)
at com.android.org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1516)
at com.android.org.kxml2.io.KXmlParser.peekType(KXmlParser.java:993)
at com.android.org.kxml2.io.KXmlParser.next(KXmlParser.java:349)
at com.android.org.kxml2.io.KXmlParser.next(KXmlParser.java:313)
at org.jivesoftware.smack.xml.xpp3.Xpp3XmlPullParser.next(Xpp3XmlPullParser.java:228)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1143)
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:1019)
what shuould I do? Thank you.