Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit b121a3a

Browse files
authored
Back out implementation of MSC2314 (#12474)
MSC2314 has now been closed, so we're backing out its implementation, which originally happened in #6176. Unfortunately it's not a direct revert, as that PR mixed in a bunch of unrelated changes to tests etc.
1 parent f8d3ee9 commit b121a3a

File tree

5 files changed

+13
-61
lines changed

5 files changed

+13
-61
lines changed

changelog.d/12474.misc

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Back out experimental implementation of [MSC2314](https://github.com/matrix-org/matrix-spec-proposals/pull/2314).

synapse/federation/federation_server.py

+9-17
Original file line numberDiff line numberDiff line change
@@ -515,7 +515,7 @@ async def _process_edu(edu_dict: JsonDict) -> None:
515515
)
516516

517517
async def on_room_state_request(
518-
self, origin: str, room_id: str, event_id: Optional[str]
518+
self, origin: str, room_id: str, event_id: str
519519
) -> Tuple[int, JsonDict]:
520520
origin_host, _ = parse_server_name(origin)
521521
await self.check_server_matches_acl(origin_host, room_id)
@@ -530,18 +530,13 @@ async def on_room_state_request(
530530
# - but that's non-trivial to get right, and anyway somewhat defeats
531531
# the point of the linearizer.
532532
async with self._server_linearizer.queue((origin, room_id)):
533-
resp: JsonDict = dict(
534-
await self._state_resp_cache.wrap(
535-
(room_id, event_id),
536-
self._on_context_state_request_compute,
537-
room_id,
538-
event_id,
539-
)
533+
resp = await self._state_resp_cache.wrap(
534+
(room_id, event_id),
535+
self._on_context_state_request_compute,
536+
room_id,
537+
event_id,
540538
)
541539

542-
room_version = await self.store.get_room_version_id(room_id)
543-
resp["room_version"] = room_version
544-
545540
return 200, resp
546541

547542
async def on_state_ids_request(
@@ -574,14 +569,11 @@ async def _on_state_ids_request_compute(
574569
return {"pdu_ids": state_ids, "auth_chain_ids": list(auth_chain_ids)}
575570

576571
async def _on_context_state_request_compute(
577-
self, room_id: str, event_id: Optional[str]
572+
self, room_id: str, event_id: str
578573
) -> Dict[str, list]:
579574
pdus: Collection[EventBase]
580-
if event_id:
581-
event_ids = await self.handler.get_state_ids_for_pdu(room_id, event_id)
582-
pdus = await self.store.get_events_as_list(event_ids)
583-
else:
584-
pdus = (await self.state.get_current_state(room_id)).values()
575+
event_ids = await self.handler.get_state_ids_for_pdu(room_id, event_id)
576+
pdus = await self.store.get_events_as_list(event_ids)
585577

586578
auth_chain = await self.store.get_auth_chain(
587579
room_id, [pdu.event_id for pdu in pdus]

synapse/federation/transport/server/federation.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ async def on_GET(
160160
return await self.handler.on_room_state_request(
161161
origin,
162162
room_id,
163-
parse_string_from_args(query, "event_id", None, required=False),
163+
parse_string_from_args(query, "event_id", None, required=True),
164164
)
165165

166166

sytest-blacklist

-4
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ Newly created users see their own presence in /initialSync (SYT-34)
2121
# Blacklisted due to https://github.com/matrix-org/synapse/issues/1396
2222
Should reject keys claiming to belong to a different user
2323

24-
# Blacklisted due to https://github.com/matrix-org/matrix-doc/pull/2314 removing
25-
# this requirement from the spec
26-
Inbound federation of state requires event_id as a mandatory paramater
27-
2824
# Blacklisted until MSC2753 is implemented
2925
Local users can peek into world_readable rooms by room ID
3026
We can't peek into rooms with shared history_visibility

tests/federation/test_federation_server.py

+2-39
Original file line numberDiff line numberDiff line change
@@ -104,58 +104,21 @@ def test_wildcard_matching(self):
104104

105105

106106
class StateQueryTests(unittest.FederatingHomeserverTestCase):
107-
108107
servlets = [
109108
admin.register_servlets,
110109
room.register_servlets,
111110
login.register_servlets,
112111
]
113112

114-
def test_without_event_id(self):
115-
"""
116-
Querying v1/state/<room_id> without an event ID will return the current
117-
known state.
118-
"""
119-
u1 = self.register_user("u1", "pass")
120-
u1_token = self.login("u1", "pass")
121-
122-
room_1 = self.helper.create_room_as(u1, tok=u1_token)
123-
self.inject_room_member(room_1, "@user:other.example.com", "join")
124-
125-
channel = self.make_signed_federation_request(
126-
"GET", "/_matrix/federation/v1/state/%s" % (room_1,)
127-
)
128-
self.assertEqual(200, channel.code, channel.result)
129-
130-
self.assertEqual(
131-
channel.json_body["room_version"],
132-
self.hs.config.server.default_room_version.identifier,
133-
)
134-
135-
members = set(
136-
map(
137-
lambda x: x["state_key"],
138-
filter(
139-
lambda x: x["type"] == "m.room.member", channel.json_body["pdus"]
140-
),
141-
)
142-
)
143-
144-
self.assertEqual(members, {"@user:other.example.com", u1})
145-
self.assertEqual(len(channel.json_body["pdus"]), 6)
146-
147113
def test_needs_to_be_in_room(self):
148-
"""
149-
Querying v1/state/<room_id> requires the server
150-
be in the room to provide data.
151-
"""
114+
"""/v1/state/<room_id> requires the server to be in the room"""
152115
u1 = self.register_user("u1", "pass")
153116
u1_token = self.login("u1", "pass")
154117

155118
room_1 = self.helper.create_room_as(u1, tok=u1_token)
156119

157120
channel = self.make_signed_federation_request(
158-
"GET", "/_matrix/federation/v1/state/%s" % (room_1,)
121+
"GET", "/_matrix/federation/v1/state/%s?event_id=xyz" % (room_1,)
159122
)
160123
self.assertEqual(403, channel.code, channel.result)
161124
self.assertEqual(channel.json_body["errcode"], "M_FORBIDDEN")

0 commit comments

Comments
 (0)