Stale session/presence problem

This morning I was trying out Jeti, a Java Jabber client, and ran into a small problem. I’‘m running JM 2.1.2 on a WinXP workstation with MySQL as the db. Already connected with “user1” using Exodus and have “user2” on that roster. Fired up Jeti and logged in as “user2”. Everything worked fine (presence, chat, etc) until I told Jeti to exit (I can only reproduce this by right-clicking on the taskbar icon and exiting – using Jeti’'s regular menus works fine).

It appears as if Jeti just exited without alerting JM that it was going offline. So, in the JM Sessions admin area, I still have “user1” and “user2” as Authenticated and Online. I tried to click the “Close Connection” link to close the “user2” connection, but I still have “user2” showing up as Closed and Online on the admin sessions page. “user2” is also still shown as Online to “user1” in Exodus.

It looks like the following SocketException I received in the logs in not being caught properly (but IANAJP):

2005.03.08 10:52:34 org.jivesoftware.messenger.net.SocketConnection.deliver(SocketConnection.java:19 2)

java.net.SocketException: Software caused connection abort: socket write error

at java.net.SocketOutputStream.socketWrite0(Native Method)

at java.net.SocketOutputStream.socketWrite(Unknown Source)

at java.net.SocketOutputStream.write(Unknown Source)

at sun.nio.cs.StreamEncoder$CharsetSE.writeBytes(Unknown Source)

at sun.nio.cs.StreamEncoder$CharsetSE.implFlushBuffer(Unknown Source)

at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(Unknown Source)

at sun.nio.cs.StreamEncoder.flush(Unknown Source)

at java.io.OutputStreamWriter.flush(Unknown Source)

at java.io.BufferedWriter.flush(Unknown Source)

at org.dom4j.io.XMLWriter.flush(XMLWriter.java:244)

at org.jivesoftware.messenger.net.SocketConnection.deliver(SocketConnection.java:1 89)

at org.jivesoftware.messenger.ClientSession.deliver(ClientSession.java:287)

at org.jivesoftware.messenger.ClientSession.process(ClientSession.java:281)

at org.jivesoftware.messenger.PresenceRouter.handle(PresenceRouter.java:91)

at org.jivesoftware.messenger.PresenceRouter.route(PresenceRouter.java:59)

at org.jivesoftware.messenger.PacketRouter.route(PacketRouter.java:73)

at org.jivesoftware.messenger.net.SocketReadThread.readStream(SocketReadThread.jav a:227)

at org.jivesoftware.messenger.net.SocketReadThread.run(SocketReadThread.java:110)