mirror of
https://mau.dev/maunium/synapse.git
synced 2024-11-15 06:21:49 +01:00
Correctly handle case of rejected events in state res
This commit is contained in:
parent
633f97151c
commit
ce59a2faad
1 changed files with 16 additions and 10 deletions
|
@ -507,21 +507,27 @@ def _create_auth_events_from_maps(unconflicted_state, conflicted_state, state_ma
|
||||||
auth_events = {}
|
auth_events = {}
|
||||||
for event_ids in conflicted_state.itervalues():
|
for event_ids in conflicted_state.itervalues():
|
||||||
for event_id in event_ids:
|
for event_id in event_ids:
|
||||||
keys = event_auth.auth_types_for_event(state_map[event_id])
|
if event_id in state_map:
|
||||||
for key in keys:
|
keys = event_auth.auth_types_for_event(state_map[event_id])
|
||||||
if key not in auth_events:
|
for key in keys:
|
||||||
event_id = unconflicted_state.get(key, None)
|
if key not in auth_events:
|
||||||
if event_id:
|
event_id = unconflicted_state.get(key, None)
|
||||||
auth_events[key] = event_id
|
if event_id:
|
||||||
|
auth_events[key] = event_id
|
||||||
return auth_events
|
return auth_events
|
||||||
|
|
||||||
|
|
||||||
def _resolve_with_state(unconflicted_state, conflicted_state, auth_events,
|
def _resolve_with_state(unconflicted_state, conflicted_state, auth_events,
|
||||||
state_map):
|
state_map):
|
||||||
conflicted_state = {
|
new_conflicted_state = {}
|
||||||
key: [state_map[ev_id] for ev_id in event_ids if ev_id in state_map]
|
for key, event_ids in conflicted_state.iteritems():
|
||||||
for key, event_ids in conflicted_state.items()
|
events = [state_map[ev_id] for ev_id in event_ids if ev_id in state_map]
|
||||||
}
|
if len(events) > 1:
|
||||||
|
new_conflicted_state[key] = events
|
||||||
|
elif len(events) == 1:
|
||||||
|
unconflicted_state[key] = events[0].event_id
|
||||||
|
|
||||||
|
conflicted_state = new_conflicted_state
|
||||||
|
|
||||||
auth_events = {
|
auth_events = {
|
||||||
key: state_map[ev_id]
|
key: state_map[ev_id]
|
||||||
|
|
Loading…
Reference in a new issue