diff options
author | Richard van der Hoff <richard@matrix.org> | 2017-04-07 14:39:32 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2017-04-07 14:39:32 +0100 |
commit | 64765e51996382c633a7bcf0f8fd26b3ec20e15d (patch) | |
tree | fd47194ef59edabc6e921890407fc543b471327e | |
parent | Bump version and changelog (diff) | |
download | synapse-64765e51996382c633a7bcf0f8fd26b3ec20e15d.tar.xz |
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.
-rw-r--r-- | synapse/handlers/federation.py | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py index 2ecc0087b8..53f9296399 100644 --- a/synapse/handlers/federation.py +++ b/synapse/handlers/federation.py @@ -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 |