Affects Version/s: ejabberd 1.1.4, ejabberd 2.0.5, ejabberd 2.1.0
Component/s: Multi-User Chat (MUC)
XEP-0045, section 7.2.9 http://xmpp.org/extensions/xep-0045.html#enter-conflict
However, if the bare JID <firstname.lastname@example.org> of the present occupant matches the bare JID of the user seeking to enter the room, then the service SHOULD allow entry to the user, so that the user has two (or more) in-room "sessions" with the same roomnick, one for each resource. If a service allows more than one occupant with the same bare JID and the same room nickname, it MUST route in-room messages to all of the user's resources and allow all of the user's resources to send messages to the room; it is up to the implementation whether to route private messages to all resources or only one resource (based on presence priority or some other algorithm); however, it is RECOMMENDED to route to all resources.
Reported problems in the patch and their status:
- A private message sent from any participant to the nick is only sent to the last joined resource. It should be sent to all the resources.
- If the last joined resource now leaves the room, then all other resources are kicked of the room. They should be kept alive.
- The option max_user_conferences only works correctly when the limit is 1. If the limit is 2 or more, then the user can join as many resources as he wants.
- The option max_users is implemented in such way that it considers the multiple resources as only 1 participant.
- Update the patch to ejabberd master branch and test it again.