|
@@ -515,7 +515,7 @@ class FederationServer(FederationBase):
|
|
|
)
|
|
|
|
|
|
async def on_room_state_request(
|
|
|
- self, origin: str, room_id: str, event_id: Optional[str]
|
|
|
+ self, origin: str, room_id: str, event_id: str
|
|
|
) -> Tuple[int, JsonDict]:
|
|
|
origin_host, _ = parse_server_name(origin)
|
|
|
await self.check_server_matches_acl(origin_host, room_id)
|
|
@@ -530,18 +530,13 @@ class FederationServer(FederationBase):
|
|
|
# - but that's non-trivial to get right, and anyway somewhat defeats
|
|
|
# the point of the linearizer.
|
|
|
async with self._server_linearizer.queue((origin, room_id)):
|
|
|
- resp: JsonDict = dict(
|
|
|
- await self._state_resp_cache.wrap(
|
|
|
- (room_id, event_id),
|
|
|
- self._on_context_state_request_compute,
|
|
|
- room_id,
|
|
|
- event_id,
|
|
|
- )
|
|
|
+ resp = await self._state_resp_cache.wrap(
|
|
|
+ (room_id, event_id),
|
|
|
+ self._on_context_state_request_compute,
|
|
|
+ room_id,
|
|
|
+ event_id,
|
|
|
)
|
|
|
|
|
|
- room_version = await self.store.get_room_version_id(room_id)
|
|
|
- resp["room_version"] = room_version
|
|
|
-
|
|
|
return 200, resp
|
|
|
|
|
|
async def on_state_ids_request(
|
|
@@ -574,14 +569,11 @@ class FederationServer(FederationBase):
|
|
|
return {"pdu_ids": state_ids, "auth_chain_ids": list(auth_chain_ids)}
|
|
|
|
|
|
async def _on_context_state_request_compute(
|
|
|
- self, room_id: str, event_id: Optional[str]
|
|
|
+ self, room_id: str, event_id: str
|
|
|
) -> Dict[str, list]:
|
|
|
pdus: Collection[EventBase]
|
|
|
- if event_id:
|
|
|
- event_ids = await self.handler.get_state_ids_for_pdu(room_id, event_id)
|
|
|
- pdus = await self.store.get_events_as_list(event_ids)
|
|
|
- else:
|
|
|
- pdus = (await self.state.get_current_state(room_id)).values()
|
|
|
+ event_ids = await self.handler.get_state_ids_for_pdu(room_id, event_id)
|
|
|
+ pdus = await self.store.get_events_as_list(event_ids)
|
|
|
|
|
|
auth_chain = await self.store.get_auth_chain(
|
|
|
room_id, [pdu.event_id for pdu in pdus]
|