User not removed from MUC room when client connection aborts

Hi everyone,

We’ve literally been struggling with this issue for years so I hope someone from igniterealtime will be able to help me with this!

We have a NodeJS-Based XMPP gateway that creates and closes quite a lot of anonymous xmpp client connections. We’re using the regular XMPP Client protocol (through the node-xmpp-client package), not BOSH. We’re using the latest Openfire 4.0.3.

The problem is that users keep “freezing” in MUC rooms, meaning they stay in them even if they should have disconnected. This does not happen with all our client connections, just some, pretty randomly. The problem then is that nicknames are taken and new connections get a 409-conflict when trying to re-join the MUC room. I can’t rule out some rude behavior from the node-xmpp-client library, when it comes to tcp connection handling, but the users even stay in the MUC rooms when I completely stop the node process and after waiting for the usual 30sec tcp timeout - they just never get removed, which to me points at an Openfire bug.

To me, it looks like Openfire doesn’t remove users from MUC rooms in all client connection closing scenarios (like maybe tcp abort or something…).

Could anyone from the team please have a look at this? I’d be willing to debug with them if need be.

Best regards,

Mike

I have filed this as OF-1181

Cleaning up sessions on tcp connection failures has been a giant struggle over the years.

Awesome! Giant thanks for picking this up, Daryl! Looking forward to hearing from that ticket

I have the same problem,have you solve the problem