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.