From 9aed791fc38790eae6c24e154e7f82ac8509295d Mon Sep 17 00:00:00 2001
From: Mark Haines <mark.haines@matrix.org>
Date: Tue, 14 Oct 2014 16:44:27 +0100
Subject: [PATCH] SYN-103: Ignore the 'origin' key in received EDUs. Instead
 take the origin from the transaction itself

---
 synapse/federation/replication.py   | 2 +-
 synapse/federation/units.py         | 8 ++++++--
 tests/federation/test_federation.py | 1 +
 tests/handlers/test_presence.py     | 1 +
 tests/handlers/test_typing.py       | 1 +
 5 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/synapse/federation/replication.py b/synapse/federation/replication.py
index 2346d55045..9363ac7300 100644
--- a/synapse/federation/replication.py
+++ b/synapse/federation/replication.py
@@ -319,7 +319,7 @@ class ReplicationLayer(object):
 
         if hasattr(transaction, "edus"):
             for edu in [Edu(**x) for x in transaction.edus]:
-                self.received_edu(edu.origin, edu.edu_type, edu.content)
+                self.received_edu(transaction.origin, edu.edu_type, edu.content)
 
         results = yield defer.DeferredList(dl)
 
diff --git a/synapse/federation/units.py b/synapse/federation/units.py
index ecca35ac43..d97aeb698e 100644
--- a/synapse/federation/units.py
+++ b/synapse/federation/units.py
@@ -156,11 +156,15 @@ class Edu(JsonEncodedObject):
     ]
 
     required_keys = [
-        "origin",
-        "destination",
         "edu_type",
     ]
 
+#    TODO: SYN-103: Remove "origin" and "destination" keys.
+#    internal_keys = [
+#        "origin",
+#        "destination",
+#    ]
+
 
 class Transaction(JsonEncodedObject):
     """ A transaction is a list of Pdus and Edus to be sent to a remote home
diff --git a/tests/federation/test_federation.py b/tests/federation/test_federation.py
index 8d277d6612..d86ce83b28 100644
--- a/tests/federation/test_federation.py
+++ b/tests/federation/test_federation.py
@@ -211,6 +211,7 @@ class FederationTestCase(unittest.TestCase):
                     "pdus": [],
                     "edus": [
                         {
+                            # TODO: SYN-103: Remove "origin" and "destination"
                             "origin": "test",
                             "destination": "remote",
                             "edu_type": "m.test",
diff --git a/tests/handlers/test_presence.py b/tests/handlers/test_presence.py
index 15022b8d05..84985a8066 100644
--- a/tests/handlers/test_presence.py
+++ b/tests/handlers/test_presence.py
@@ -43,6 +43,7 @@ def _expect_edu(destination, edu_type, content, origin="test"):
         "pdus": [],
         "edus": [
             {
+                # TODO: SYN-103: Remove "origin" and "destination" keys.
                 "origin": origin,
                 "destination": destination,
                 "edu_type": edu_type,
diff --git a/tests/handlers/test_typing.py b/tests/handlers/test_typing.py
index 064b04c217..b685373deb 100644
--- a/tests/handlers/test_typing.py
+++ b/tests/handlers/test_typing.py
@@ -33,6 +33,7 @@ def _expect_edu(destination, edu_type, content, origin="test"):
         "pdus": [],
         "edus": [
             {
+                # TODO: SYN-103: Remove "origin" and "destination" keys.
                 "origin": origin,
                 "destination": destination,
                 "edu_type": edu_type,
-- 
GitLab