Fix state resolution to remember join_rules is a type of auth event.

This commit is contained in:
Erik Johnston 2015-02-04 10:36:28 +00:00
parent c0462dbf15
commit f275ba49bb

View File

@ -37,7 +37,10 @@ def _get_state_key_from_event(event):
KeyStateTuple = namedtuple("KeyStateTuple", ("context", "type", "state_key")) KeyStateTuple = namedtuple("KeyStateTuple", ("context", "type", "state_key"))
AuthEventTypes = (EventTypes.Create, EventTypes.Member, EventTypes.PowerLevels,) AuthEventTypes = (
EventTypes.Create, EventTypes.Member, EventTypes.PowerLevels,
EventTypes.JoinRules,
)
class StateHandler(object): class StateHandler(object):
@ -258,6 +261,15 @@ class StateHandler(object):
auth_events.update(resolved_state) auth_events.update(resolved_state)
for key, events in conflicted_state.items():
if key[0] == EventTypes.JoinRules:
resolved_state[key] = self._resolve_auth_events(
events,
auth_events
)
auth_events.update(resolved_state)
for key, events in conflicted_state.items(): for key, events in conflicted_state.items():
if key[0] == EventTypes.Member: if key[0] == EventTypes.Member:
resolved_state[key] = self._resolve_auth_events( resolved_state[key] = self._resolve_auth_events(