diff options
author | Kegan Dougal <kegan@matrix.org> | 2014-09-15 15:27:58 +0100 |
---|---|---|
committer | Kegan Dougal <kegan@matrix.org> | 2014-09-15 15:27:58 +0100 |
commit | 14bc4ed59f0d98e80db96ed8232983f814082305 (patch) | |
tree | 27e70665764b41f5f16f8662eb1328e2ba20aba7 /synapse/federation | |
parent | Update spec to include m.login.email.identity (diff) | |
parent | Correctly handle the 'age' key in events and pdus (diff) | |
download | synapse-14bc4ed59f0d98e80db96ed8232983f814082305.tar.xz |
Merge branch 'develop' of github.com:matrix-org/synapse into registration-api-changes in preparation for re-merge to develop.
Diffstat (limited to 'synapse/federation')
-rw-r--r-- | synapse/federation/replication.py | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/synapse/federation/replication.py b/synapse/federation/replication.py index e12510017f..c79ce44688 100644 --- a/synapse/federation/replication.py +++ b/synapse/federation/replication.py @@ -291,6 +291,12 @@ class ReplicationLayer(object): def on_incoming_transaction(self, transaction_data): transaction = Transaction(**transaction_data) + for p in transaction.pdus: + if "age" in p: + p["age_ts"] = int(self.clock.time_msec()) - int(p["age"]) + + pdu_list = [Pdu(**p) for p in transaction.pdus] + logger.debug("[%s] Got transaction", transaction.transaction_id) response = yield self.transaction_actions.have_responded(transaction) @@ -303,8 +309,6 @@ class ReplicationLayer(object): logger.debug("[%s] Transacition is new", transaction.transaction_id) - pdu_list = [Pdu(**p) for p in transaction.pdus] - dl = [] for pdu in pdu_list: dl.append(self._handle_new_pdu(pdu)) @@ -405,9 +409,14 @@ class ReplicationLayer(object): """Returns a new Transaction containing the given PDUs suitable for transmission. """ + pdus = [p.get_dict() for p in pdu_list] + for p in pdus: + if "age_ts" in pdus: + p["age"] = int(self.clock.time_msec()) - p["age_ts"] + return Transaction( - pdus=[p.get_dict() for p in pdu_list], origin=self.server_name, + pdus=pdus, ts=int(self._clock.time_msec()), destination=None, ) |