diff options
author | Erik Johnston <erik@matrix.org> | 2014-10-17 18:56:42 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-10-17 18:56:42 +0100 |
commit | 5ffe5ab43fa090111a0141b04ce6342172f60724 (patch) | |
tree | 45af4a0c2fdbb3c89853645cafe1440b13c6d3f4 /synapse/federation/replication.py | |
parent | Finish implementing the new join dance. (diff) | |
download | synapse-5ffe5ab43fa090111a0141b04ce6342172f60724.tar.xz |
Use state groups to get current state. Make join dance actually work.
Diffstat (limited to 'synapse/federation/replication.py')
-rw-r--r-- | synapse/federation/replication.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/synapse/federation/replication.py b/synapse/federation/replication.py index d482193851..8c7d510ef6 100644 --- a/synapse/federation/replication.py +++ b/synapse/federation/replication.py @@ -403,12 +403,19 @@ class ReplicationLayer(object): defer.returnValue( (404, "No handler for Query type '%s'" % (query_type, )) ) + @defer.inlineCallbacks def on_make_join_request(self, context, user_id): pdu = yield self.handler.on_make_join_request(context, user_id) defer.returnValue(pdu.get_dict()) @defer.inlineCallbacks + def on_invite_request(self, origin, content): + pdu = Pdu(**content) + ret_pdu = yield self.handler.on_send_join_request(origin, pdu) + defer.returnValue((200, ret_pdu.get_dict())) + + @defer.inlineCallbacks def on_send_join_request(self, origin, content): pdu = Pdu(**content) state = yield self.handler.on_send_join_request(origin, pdu) @@ -426,8 +433,9 @@ class ReplicationLayer(object): defer.returnValue(Pdu(**pdu_dict)) + @defer.inlineCallbacks def send_join(self, destination, pdu): - return self.transport_layer.send_join( + _, content = yield self.transport_layer.send_join( destination, pdu.context, pdu.pdu_id, @@ -435,6 +443,13 @@ class ReplicationLayer(object): pdu.get_dict(), ) + logger.debug("Got content: %s", content) + pdus = [Pdu(outlier=True, **p) for p in content.get("pdus", [])] + for pdu in pdus: + yield self._handle_new_pdu(destination, pdu) + + defer.returnValue(pdus) + @defer.inlineCallbacks @log_function def _get_persisted_pdu(self, pdu_id, pdu_origin): |