mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-05-02 10:56:06 -04:00
Fix public room joining by making sure replaces_state never points to itself.
This commit is contained in:
parent
9191292b0f
commit
0b04369238
3 changed files with 13 additions and 10 deletions
|
@ -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)]
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue