If a user is already registered to the room, OpenFire will still bring up a registration form for that user, if the user sends a registration request. This can result in immediate demotions for a room (after the registration request has been submitted), including removing the room owner.
Here’s the room join dialog (note the bold):
(18:23:51) jabber: Sending (ssl) (bbyrd@foobar.com/spark): 1<x xmlns='http://jabber.org/protocol/muc’/>
(18:23:51) jabber: Recv (ssl)(415): 1
(18:23:51) jabber: Sending (ssl) (bbyrd@foobar.com/spark): <query xmlns=‘http://jabber.org/protocol/disco#info’ node='http://jabber.org/protocol/muc#traffic’/>
(18:23:51) jabber: Recv (ssl)(377): 1
(18:23:51) jabber: Recv (ssl)(221): This room is not anonymous.
(18:23:51) jabber: Recv (ssl)(317):
And here’s the registration request:
(18:27:56) jabber: Sending (ssl) (bbyrd@foobar.com/spark):
(18:27:56) jabber: Recv (ssl)(972): Registration with the roomPlease provide the following information to register with this room.http://jabber.org/protocol/muc#registerbbyrd
This breaks XMPP protocol standards here: http://xmpp.org/extensions/xep-0045.html#register
If the user requesting registration requirements is not allowed to register with the room (e.g., because that privilege has been restricted), the room MUST return a error to the user. If the user is already registered, the room MUST reply with an IQ stanza of type “result” that contains an empty element as described in XEP-0077. If the room does not exist, the service MUST return an error.