Add support for deaf occupant in MUC rooms

Description

Functional requirements:

1) While joining a room users can specify if they want to get messages broadcasted from the room. This means that this feature is per user per room and it only lasts the session while the user is in the room.

2) Once a user has joined a room, he is not going to be able to become deaf or stop being deaf.

3) Deaf occupants are still going to be able to receive messages or any type of packet from other users.

4) Deaf occupants are going to be able to receive private messages sent to him through the room from other room occupants. This means that deaf occupants will only not receive messages broadcasted to all room occupants.

5) Deaf occupants are going to be able to receive IQ or presence packets from other room occupants

6) Any user that is allowed to join a room can indicate if he is going to be deaf occupant. This means that there is no ACL over who can or cannot become a deaf occupant.

Extension to the JEP-45 that defines the MultiUserChat specification:

To become a deaf occupant the user joining the room should include in the initial presence sent to the room a special extension. Users that do not include the special extension are going to be considered non-deaf (i.e. will get broadcasted room messages). Therefore, users using the standard way to join a room are going to be non-deaf as shown in the following example obtained from the JEP-45:

Example 17. Jabber User Seeks to Enter a Room (Multi-User Chat)

<presence
from='hag66@shakespeare.lit/pda'
to='darkcave@macbeth.shakespeare.lit/thirdwitch'>
<x xmlns='http://jabber.org/protocol/muc'/>
</presence>

The following example shows how users joining the room MUST indicate that they want to become deaf occupants:

<presence
from='hag66@shakespeare.lit/pda'
to='darkcave@macbeth.shakespeare.lit/thirdwitch'>
<x xmlns='http://jabber.org/protocol/muc'/>
<x xmlns='http://jivesoftware.org/protocol/muc'>
<deaf-occupant/>
</x>
</presence>

Environment

None

Acceptance Test - Entry

None
Fixed

Assignee

Gaston Dombiak

Reporter

Gaston Dombiak

Labels

None

Expected Effort

None

Ignite Forum URL

None

Components

Fix versions

Affects versions

Priority

Major
Configure