Beware of non-empty state_keys on special events

This commit is contained in:
Andrew Ferrazzutti 2024-06-19 10:12:17 -04:00
parent e038f4779f
commit e1d4c75e90
2 changed files with 19 additions and 0 deletions

View file

@ -132,6 +132,23 @@ class EventTypes:
CallInvite: Final = "m.call.invite"
ZERO_LENGTH_STATE_KEY_EVENT_TYPES = {
EventTypes.CanonicalAlias,
EventTypes.Create,
EventTypes.JoinRules,
EventTypes.PowerLevels,
EventTypes.Name,
EventTypes.Topic,
EventTypes.RoomAvatar,
EventTypes.Pinned,
EventTypes.RoomEncryption,
EventTypes.RoomHistoryVisibility,
EventTypes.GuestAccess,
EventTypes.ServerACL,
EventTypes.Tombstone,
}
class ToDeviceEventTypes:
RoomKeyRequest: Final = "m.room_key_request"

View file

@ -46,6 +46,7 @@ from unpaddedbase64 import decode_base64
from synapse.api.constants import (
MAX_PDU_SIZE,
ZERO_LENGTH_STATE_KEY_EVENT_TYPES,
EventContentFields,
EventTypes,
JoinRules,
@ -794,6 +795,7 @@ def get_send_level(
state_key == msc_3779_sender
or state_key.startswith(msc_3779_sender + "_")
)
and etype not in ZERO_LENGTH_STATE_KEY_EVENT_TYPES
)
if state_key is not None and not is_owned_state_event:
send_level = power_levels_content.get("state_default", 50)