This is likely to be caused by the way a nickname is represented in the MUCRole descendants.
LocalMUC user creates a (local) MUCRole like this:
role = room.joinRoom(recipient.getResource().trim(),
password,
historyRequest,
this,
packet.createCopy());
While RemoteMUCRole gets its nickname from an event, that specifies the value like this:
public String getNickname() {
return presence.getTo().getResource();
}
Notice that one implementation trims the resource, while the other one doesn't.
This behavior corresponds with what we see on our domain: malicious users are flooding MUC rooms with nicknames that never get cleaned up (not even after the client disconnects).
This is likely to be caused by the way a nickname is represented in the MUCRole descendants.
LocalMUC user creates a (local) MUCRole like this:
role = room.joinRoom(recipient.getResource().trim(), password, historyRequest, this, packet.createCopy());While RemoteMUCRole gets its nickname from an event, that specifies the value like this:
Notice that one implementation trims the resource, while the other one doesn't.
This behavior corresponds with what we see on our domain: malicious users are flooding MUC rooms with nicknames that never get cleaned up (not even after the client disconnects).
role = room.joinRoom(recipient.getResource().trim(), password, historyRequest, this, packet.createCopy());