0
0
Fork 1
mirror of https://mau.dev/maunium/synapse.git synced 2024-12-15 02:53:51 +01:00

When we do an invite rejection, save the signed leave event to the db

During a rejection of an invite received over federation, we ask a remote
server to make us a `leave` event, then sign it, then send that with
`send_leave`.

We were saving the *unsigned* version of the event (which has a different event
id to the signed version) to our db (and sending it to the clients), whereas
other servers in the room will have seen the *signed* version. We're not aware
of any actual problems that caused, except that it makes the database confusing
to look at and generally leaves the room in a weird state.
This commit is contained in:
Richard van der Hoff 2017-04-07 14:39:32 +01:00
parent a41fe500d6
commit 64765e5199

View file

@ -1101,15 +1101,15 @@ class FederationHandler(BaseHandler):
user_id,
"leave"
)
signed_event = self._sign_event(event)
event = self._sign_event(event)
except SynapseError:
raise
except CodeMessageException as e:
logger.warn("Failed to reject invite: %s", e)
raise SynapseError(500, "Failed to reject invite")
# Try the host we successfully got a response to /make_join/
# request first.
# Try the host that we succesfully called /make_leave/ on first for
# the /send_leave/ request.
try:
target_hosts.remove(origin)
target_hosts.insert(0, origin)
@ -1119,7 +1119,7 @@ class FederationHandler(BaseHandler):
try:
yield self.replication_layer.send_leave(
target_hosts,
signed_event
event
)
except SynapseError:
raise