Randomly getting "Unrecognized SSL message, plaintext connection?"

Hi,

I’‘ve developped a little bot using the smack library. I’'ve written it in javascript with the JDK6. Everything works fine, except when starting the script and connecting to the jabber server (which is wildfire 3.1). I randomly gets this error:

java.net.SocketException: Socket closed

at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99)

at java.net.SocketOutputStream.write(SocketOutputStream.java:136)

at sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:202)

at sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:272)

at sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:276)

at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:122)

at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:212)

at java.io.BufferedWriter.flush(BufferedWriter.java:236)

at org.jivesoftware.smack.PacketWriter.writePackets(PacketWriter.java:260)

at org.jivesoftware.smack.PacketWriter.access$000(PacketWriter.java:39)

at org.jivesoftware.smack.PacketWriter$1.run(PacketWriter.java:79)

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

at com.sun.net.ssl.internal.ssl.InputRecord.handleUnknownRecord(InputRecord.java:5 21)

at com.sun.net.ssl.internal.ssl.InputRecord.read(InputRecord.java:355)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:722)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImp l.java:1029)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:10 56)

at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:10 40)

at org.jivesoftware.smack.XMPPConnection.proceedTLSReceived(XMPPConnection.java:11 21)

at org.jivesoftware.smack.PacketReader.parsePackets(PacketReader.java:327)

at org.jivesoftware.smack.PacketReader.access$000(PacketReader.java:43)

at org.jivesoftware.smack.PacketReader$1.run(PacketReader.java:63)

I’'ve had this on my development server at the beginning, but I attributed it to an error of mine. However, when I transfer this script to the production server, I get this error 9 out of 10 times.

The client connection security is configured as “Optional - Clients may connect to the server using secured connections.”.

In the error logs of the server I get this:

2007.02.06 15:07:37 org.jivesoftware.wildfire.net.SocketReadingMode.negotiateTLS(SocketReadingMode.j ava:75) Error while negotiating TLS: org.jivesoftware.wildfire.net.SocketConnection@13efe72 socket: Socket[addr=/XXX.XXX.XXX.XXX,port=39461,localport=5222] session: org.jivesoftware.wildfire.ClientSession@10a65b9 status: 1 address: im.myhost.com/49cba1c1 id: 49cba1c1 presence:

javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?

at com.sun.net.ssl.internal.ssl.EngineInputRecord.bytesInCompletePacket(EngineInpu tRecord.java:152)

at com.sun.net.ssl.internal.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:748 )

at com.sun.net.ssl.internal.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:663)

at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:566)

at org.jivesoftware.wildfire.net.TLSStreamHandler.doHandshake(TLSStreamHandler.jav a:304)

at org.jivesoftware.wildfire.net.TLSStreamHandler.start(TLSStreamHandler.java:250)

at org.jivesoftware.wildfire.net.SocketConnection.startTLS(SocketConnection.java:1 73)

at org.jivesoftware.wildfire.net.SocketReadingMode.negotiateTLS(SocketReadingMode. java:72)

at org.jivesoftware.wildfire.net.BlockingReadingMode.readStream(BlockingReadingMod e.java:126)

at org.jivesoftware.wildfire.net.BlockingReadingMode.run(BlockingReadingMode.java: 62)

at org.jivesoftware.wildfire.net.SocketReader.run(SocketReader.java:123)

at java.lang.Thread.run(Thread.java:595)

Both should be able to negociate TLS, and sometimes achieve it, but not always. Any idea why?

thanks.

Raph