diff options
author | Erik Johnston <erik@matrix.org> | 2014-11-07 11:22:12 +0000 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-11-07 11:22:12 +0000 |
commit | 3b4dec442da51c6c999dd946db6ea6ce5f07ff0c (patch) | |
tree | aad98c0fe05b4e403db5c37591124c1557ef3d22 /synapse/federation | |
parent | Fix bug in _get_auth_chain_txn (diff) | |
download | synapse-3b4dec442da51c6c999dd946db6ea6ce5f07ff0c.tar.xz |
Return auth chain when handling send_join
Diffstat (limited to 'synapse/federation')
-rw-r--r-- | synapse/federation/replication.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/synapse/federation/replication.py b/synapse/federation/replication.py index 92a9678e2c..d1eddf249d 100644 --- a/synapse/federation/replication.py +++ b/synapse/federation/replication.py @@ -426,8 +426,12 @@ class ReplicationLayer(object): @defer.inlineCallbacks def on_send_join_request(self, origin, content): pdu = Pdu(**content) - state = yield self.handler.on_send_join_request(origin, pdu) - defer.returnValue((200, self._transaction_from_pdus(state).get_dict())) + res_pdus = yield self.handler.on_send_join_request(origin, pdu) + + defer.returnValue((200, { + "state": [p.get_dict() for p in res_pdus["state"]], + "auth_chain": [p.get_dict() for p in res_pdus["auth_chain"]], + })) @defer.inlineCallbacks def make_join(self, destination, context, user_id): @@ -451,11 +455,17 @@ class ReplicationLayer(object): ) logger.debug("Got content: %s", content) - pdus = [Pdu(outlier=True, **p) for p in content.get("pdus", [])] - for pdu in pdus: + state = [Pdu(outlier=True, **p) for p in content.get("state", [])] + for pdu in state: yield self._handle_new_pdu(destination, pdu) - defer.returnValue(pdus) + auth_chain = [ + Pdu(outlier=True, **p) for p in content.get("auth_chain", []) + ] + for pdu in auth_chain: + yield self._handle_new_pdu(destination, pdu) + + defer.returnValue(state) @log_function def _get_persisted_pdu(self, event_id): |