mirror of
https://github.com/strukturag/nextcloud-spreed-signaling
synced 2024-06-08 00:42:25 +02:00
Create copy of filtered messages.
Otherwise it can happen that the modified message is reused and sent to another session.
This commit is contained in:
parent
5296e09a2e
commit
75e5013dd8
|
@ -1173,7 +1173,16 @@ func (s *ClientSession) filterMessage(message *ServerMessage) *ServerMessage {
|
|||
switch message.Event.Type {
|
||||
case "join":
|
||||
if s.HasPermission(PERMISSION_HIDE_DISPLAYNAMES) {
|
||||
message.Event.Join = filterDisplayNames(message.Event.Join)
|
||||
// Create unique copy of message for only this client.
|
||||
message = &ServerMessage{
|
||||
Id: message.Id,
|
||||
Type: message.Type,
|
||||
Event: &EventServerMessage{
|
||||
Type: message.Event.Type,
|
||||
Target: message.Event.Target,
|
||||
Join: filterDisplayNames(message.Event.Join),
|
||||
},
|
||||
}
|
||||
}
|
||||
case "message":
|
||||
if message.Event.Message == nil || message.Event.Message.Data == nil || len(*message.Event.Message.Data) == 0 || !s.HasPermission(PERMISSION_HIDE_DISPLAYNAMES) {
|
||||
|
@ -1189,7 +1198,19 @@ func (s *ClientSession) filterMessage(message *ServerMessage) *ServerMessage {
|
|||
if displayName, found := (*data.Chat.Comment)["actorDisplayName"]; found && displayName != "" {
|
||||
(*data.Chat.Comment)["actorDisplayName"] = ""
|
||||
if encoded, err := json.Marshal(data); err == nil {
|
||||
message.Event.Message.Data = (*json.RawMessage)(&encoded)
|
||||
// Create unique copy of message for only this client.
|
||||
message = &ServerMessage{
|
||||
Id: message.Id,
|
||||
Type: message.Type,
|
||||
Event: &EventServerMessage{
|
||||
Type: message.Event.Type,
|
||||
Target: message.Event.Target,
|
||||
Message: &RoomEventMessage{
|
||||
RoomId: message.Event.Message.RoomId,
|
||||
Data: (*json.RawMessage)(&encoded),
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue