diff options
author | Erik Johnston <erik@matrix.org> | 2015-02-23 13:58:02 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2015-02-23 13:58:02 +0000 |
commit | db215b7e0007a207b8775d78c6693153e16f2731 (patch) | |
tree | f62c3f26b8de39624b01620f958273d1e05db605 /synapse/handlers/federation.py | |
parent | Initial stab at implementing a batched get_missing_pdus request (diff) | |
download | synapse-db215b7e0007a207b8775d78c6693153e16f2731.tar.xz |
Implement and use new batched get missing pdu
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r-- | synapse/handlers/federation.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index 26bdc6d1a7..628e62f8b1 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -790,6 +790,29 @@ class FederationHandler(BaseHandler): defer.returnValue(ret) @defer.inlineCallbacks + def on_get_missing_events(self, origin, room_id, earliest_events, + latest_events, limit, min_depth): + in_room = yield self.auth.check_host_in_room( + room_id, + origin + ) + if not in_room: + raise AuthError(403, "Host not in room.") + + limit = min(limit, 20) + min_depth = max(min_depth, 0) + + missing_events = yield self.store.get_missing_events( + room_id=room_id, + earliest_events=earliest_events, + latest_events=latest_events, + limit=limit, + min_depth=min_depth, + ) + + defer.returnValue(missing_events) + + @defer.inlineCallbacks @log_function def do_auth(self, origin, event, context, auth_events): # Check if we have all the auth events. |