diff options
author | Erik Johnston <erik@matrix.org> | 2017-04-26 16:18:08 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2017-04-26 16:18:08 +0100 |
commit | 34e682d3855562a4ca6e32f366a2ecfa1c684a3a (patch) | |
tree | 6328201b5fb85cf4986cbb10066e6e7497d82bbc | |
parent | Merge pull request #2160 from matrix-org/erikj/reduce_join_cache_size (diff) | |
download | synapse-34e682d3855562a4ca6e32f366a2ecfa1c684a3a.tar.xz |
Fix invite state to always include all events
-rw-r--r-- | synapse/events/utils.py | 20 | ||||
-rw-r--r-- | synapse/handlers/message.py | 9 | ||||
-rw-r--r-- | synapse/rest/client/v2_alpha/sync.py | 2 |
3 files changed, 24 insertions, 7 deletions
diff --git a/synapse/events/utils.py b/synapse/events/utils.py index 5bbaef8187..7ca7796558 100644 --- a/synapse/events/utils.py +++ b/synapse/events/utils.py @@ -225,7 +225,22 @@ def format_event_for_client_v2_without_room_id(d): def serialize_event(e, time_now_ms, as_client_event=True, event_format=format_event_for_client_v1, - token_id=None, only_event_fields=None): + token_id=None, only_event_fields=None, is_invite=False): + """Serialize event for clients + + Args: + e (EventBase) + time_now_ms (int) + as_client_event (bool) + event_format + token_id + only_event_fields + is_invite (bool): Whether this is an invite that is being sent to the + invitee + + Returns: + dict + """ # FIXME(erikj): To handle the case of presence events and the like if not isinstance(e, EventBase): return e @@ -260,4 +275,7 @@ def serialize_event(e, time_now_ms, as_client_event=True, raise TypeError("only_event_fields must be a list of strings") d = only_fields(d, only_event_fields) + if not is_invite: + d["unsigned"].pop("invite_room_state", None) + return d diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py index 348056add5..82a2ade1f6 100644 --- a/synapse/handlers/message.py +++ b/synapse/handlers/message.py @@ -531,9 +531,9 @@ class MessageHandler(BaseHandler): state_to_include_ids = [ e_id - for k, e_id in context.current_state_ids.items() + for k, e_id in context.current_state_ids.iteritems() if k[0] in self.hs.config.room_invite_state_types - or k[0] == EventTypes.Member and k[1] == event.sender + or k == (EventTypes.Member, event.sender) ] state_to_include = yield self.store.get_events(state_to_include_ids) @@ -545,7 +545,7 @@ class MessageHandler(BaseHandler): "content": e.content, "sender": e.sender, } - for e in state_to_include.values() + for e in state_to_include.itervalues() ] invitee = UserID.from_string(event.state_key) @@ -618,6 +618,3 @@ class MessageHandler(BaseHandler): ) preserve_fn(_notify)() - - # If invite, remove room_state from unsigned before sending. - event.unsigned.pop("invite_room_state", None) diff --git a/synapse/rest/client/v2_alpha/sync.py b/synapse/rest/client/v2_alpha/sync.py index a7a9e0a794..b5bcfade70 100644 --- a/synapse/rest/client/v2_alpha/sync.py +++ b/synapse/rest/client/v2_alpha/sync.py @@ -250,9 +250,11 @@ class SyncRestServlet(RestServlet): """ invited = {} for room in rooms: + logger.info("invite: %r", room.invite) invite = serialize_event( room.invite, time_now, token_id=token_id, event_format=format_event_for_client_v2_without_room_id, + is_invite=True, ) unsigned = dict(invite.get("unsigned", {})) invite["unsigned"] = unsigned |