Return auth chain when handling send_join

This commit is contained in:
Erik Johnston 2014-11-07 11:22:12 +00:00
parent 16a0815fac
commit 3b4dec442d
2 changed files with 27 additions and 8 deletions

View File

@ -426,8 +426,12 @@ class ReplicationLayer(object):
@defer.inlineCallbacks @defer.inlineCallbacks
def on_send_join_request(self, origin, content): def on_send_join_request(self, origin, content):
pdu = Pdu(**content) pdu = Pdu(**content)
state = yield self.handler.on_send_join_request(origin, pdu) res_pdus = yield self.handler.on_send_join_request(origin, pdu)
defer.returnValue((200, self._transaction_from_pdus(state).get_dict()))
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 @defer.inlineCallbacks
def make_join(self, destination, context, user_id): def make_join(self, destination, context, user_id):
@ -451,11 +455,17 @@ class ReplicationLayer(object):
) )
logger.debug("Got content: %s", content) logger.debug("Got content: %s", content)
pdus = [Pdu(outlier=True, **p) for p in content.get("pdus", [])] state = [Pdu(outlier=True, **p) for p in content.get("state", [])]
for pdu in pdus: for pdu in state:
yield self._handle_new_pdu(destination, pdu) 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 @log_function
def _get_persisted_pdu(self, event_id): def _get_persisted_pdu(self, event_id):

View File

@ -366,10 +366,19 @@ class FederationHandler(BaseHandler):
yield self.replication_layer.send_pdu(new_pdu) yield self.replication_layer.send_pdu(new_pdu)
defer.returnValue([ auth_chain = yield self.store.get_auth_chain(event.event_id)
pdu_auth_chain = [
self.pdu_codec.pdu_from_event(e) self.pdu_codec.pdu_from_event(e)
for e in event.state_events.values() for e in auth_chain
]) ]
defer.returnValue({
"state": [
self.pdu_codec.pdu_from_event(e)
for e in event.state_events.values()
],
"auth_chain": pdu_auth_chain,
})
@defer.inlineCallbacks @defer.inlineCallbacks
def get_state_for_pdu(self, event_id): def get_state_for_pdu(self, event_id):