diff options
author | Erik Johnston <erik@matrix.org> | 2014-12-11 15:56:01 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-12-11 15:56:06 +0000 |
commit | 0b0436923819a0252a7a2a6f70a1f929b45b9114 (patch) | |
tree | e4b6286969345858b37049a5d82777200023d844 /synapse/handlers/federation.py | |
parent | Fix prev_content (diff) | |
download | synapse-0b0436923819a0252a7a2a6f70a1f929b45b9114.tar.xz |
Fix public room joining by making sure replaces_state never points to itself.
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r-- | synapse/handlers/federation.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index 2201cd977e..17779475b8 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -349,7 +349,7 @@ class FederationHandler(BaseHandler): handled_events = set() try: - builder.event_id = self.event_factory.create_event_id() + builder.event_id = self.event_builder_factory.create_event_id() builder.origin = self.hs.hostname builder.content = content @@ -593,13 +593,13 @@ class FederationHandler(BaseHandler): } event = yield self.store.get_event(event_id) - if hasattr(event, "state_key"): + if event and event.is_state(): # Get previous state - if hasattr(event, "replaces_state") and event.replaces_state: - prev_event = yield self.store.get_event( - event.replaces_state - ) - results[(event.type, event.state_key)] = prev_event + if "replaces_state" in event.unsigned: + prev_id = event.unsigned["replaces_state"] + if prev_id != event.event_id: + prev_event = yield self.store.get_event(prev_id) + results[(event.type, event.state_key)] = prev_event else: del results[(event.type, event.state_key)] |