mirror of
https://github.com/element-hq/synapse
synced 2024-08-20 05:00:20 +00:00
Merge pull request #986 from matrix-org/erikj/state
Check if we already have the events returned by /state/
This commit is contained in:
commit
9377509dcd
1 changed files with 16 additions and 2 deletions
|
@ -361,12 +361,26 @@ class FederationClient(FederationBase):
|
||||||
for p in result.get("auth_chain", [])
|
for p in result.get("auth_chain", [])
|
||||||
]
|
]
|
||||||
|
|
||||||
|
seen_events = yield self.store.get_events([
|
||||||
|
ev.event_id for ev in itertools.chain(pdus, auth_chain)
|
||||||
|
])
|
||||||
|
|
||||||
signed_pdus = yield self._check_sigs_and_hash_and_fetch(
|
signed_pdus = yield self._check_sigs_and_hash_and_fetch(
|
||||||
destination, pdus, outlier=True
|
destination,
|
||||||
|
[p for p in pdus if p.event_id not in seen_events],
|
||||||
|
outlier=True
|
||||||
|
)
|
||||||
|
signed_pdus.extend(
|
||||||
|
seen_events[p.event_id] for p in pdus if p.event_id in seen_events
|
||||||
)
|
)
|
||||||
|
|
||||||
signed_auth = yield self._check_sigs_and_hash_and_fetch(
|
signed_auth = yield self._check_sigs_and_hash_and_fetch(
|
||||||
destination, auth_chain, outlier=True
|
destination,
|
||||||
|
[p for p in auth_chain if p.event_id not in seen_events],
|
||||||
|
outlier=True
|
||||||
|
)
|
||||||
|
signed_auth.extend(
|
||||||
|
seen_events[p.event_id] for p in auth_chain if p.event_id in seen_events
|
||||||
)
|
)
|
||||||
|
|
||||||
signed_auth.sort(key=lambda e: e.depth)
|
signed_auth.sort(key=lambda e: e.depth)
|
||||||
|
|
Loading…
Reference in a new issue