From ab75a7d2ac67dbf36da14c723af70d8ec244bf29 Mon Sep 17 00:00:00 2001 From: Patrick Cloke Date: Tue, 18 Jul 2023 10:12:55 -0400 Subject: Fix creating events from LPDUs. --- synapse/events/__init__.py | 4 ++++ synapse/events/builder.py | 31 +++++++++++++++++-------------- synapse/federation/federation_server.py | 3 +-- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/synapse/events/__init__.py b/synapse/events/__init__.py index 87529854c4..e06bba7afb 100644 --- a/synapse/events/__init__.py +++ b/synapse/events/__init__.py @@ -611,6 +611,10 @@ class FrozenLinearizedEvent(FrozenEventV3): # TODO(LM): Do we re-calculate depth at some point? depth = 0 # type: ignore[assignment] + @property + def origin(self) -> str: + return get_domain_from_id(self.sender) + @property def pdu_domain(self) -> str: """The domain which added this event to the DAG. diff --git a/synapse/events/builder.py b/synapse/events/builder.py index 94e5688759..084b5291eb 100644 --- a/synapse/events/builder.py +++ b/synapse/events/builder.py @@ -148,20 +148,6 @@ class EventBuilder: auth_events = auth_event_ids prev_events = prev_event_ids - # Otherwise, progress the depth as normal - if depth is None: - ( - _, - most_recent_prev_event_depth, - ) = await self._store.get_max_depth_of(prev_event_ids) - - depth = most_recent_prev_event_depth + 1 - - # we cap depth of generated events, to ensure that they are not - # rejected by other servers (and so that they can be persisted in - # the db) - depth = min(depth, MAX_DEPTH) - event_dict: Dict[str, Any] = { "auth_events": auth_events, "prev_events": prev_events, @@ -172,7 +158,23 @@ class EventBuilder: "unsigned": self.unsigned, } if not self.room_version.linearized_matrix: + # Otherwise, progress the depth as normal + if depth is None: + ( + _, + most_recent_prev_event_depth, + ) = await self._store.get_max_depth_of(prev_event_ids) + + depth = most_recent_prev_event_depth + 1 + + # we cap depth of generated events, to ensure that they are not + # rejected by other servers (and so that they can be persisted in + # the db) + depth = min(depth, MAX_DEPTH) + event_dict["depth"] = depth + elif self.hub_server is not None: + event_dict["hub_server"] = self.hub_server if self.is_state(): event_dict["state_key"] = self._state_key @@ -234,6 +236,7 @@ class EventBuilderFactory: unsigned=key_values.get("unsigned", {}), redacts=key_values.get("redacts", None), origin_server_ts=key_values.get("origin_server_ts", None), + hub_server=key_values.get("hub_server", None), ) diff --git a/synapse/federation/federation_server.py b/synapse/federation/federation_server.py index 6e5fa82a10..2557ba0f80 100644 --- a/synapse/federation/federation_server.py +++ b/synapse/federation/federation_server.py @@ -1054,9 +1054,8 @@ class FederationServer(FederationBase): lpdu_json, ( "type", - "room_Id", + "room_id", "sender", - "origin", "hub_server", "origin_server_ts", "content", -- cgit 1.4.1