Race condition with adding/cleaning rooms

Description

To expand on the explanation given on the forums;

1. org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl#processPacket calls org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl#getChatUser to get/create a user.
2. org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl#processPacket calls org.jivesoftware.openfire.muc.spi.LocalMUCUser#process(org.xmpp.packet.Presence)
3. In a background thread, org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl#checkForTimedOutUsers removes the user as they have not joined the room
4. org.jivesoftware.openfire.muc.spi.MultiUserChatServiceImpl#processPacket calls org.jivesoftware.openfire.muc.spi.LocalMUCUser#process(org.xmpp.packet.Presence) tries (fails) to add the user to the room.

Environment

None
Fixed

Assignee

Greg Thomas

Reporter

Greg Thomas