diff --git a/synapse/federation/replication.py b/synapse/federation/replication.py
index e358de942e..719bfcc42c 100644
--- a/synapse/federation/replication.py
+++ b/synapse/federation/replication.py
@@ -427,6 +427,11 @@ class ReplicationLayer(object):
}))
@defer.inlineCallbacks
+ def on_event_auth(self, origin, context, event_id):
+ auth_pdus = yield self.handler.on_event_auth(event_id)
+ defer.returnValue((200, [a.get_dict() for a in auth_pdus]))
+
+ @defer.inlineCallbacks
def make_join(self, destination, context, user_id):
pdu_dict = yield self.transport_layer.make_join(
destination=destination,
diff --git a/synapse/federation/transport.py b/synapse/federation/transport.py
index b9f7d54c71..babe8447eb 100644
--- a/synapse/federation/transport.py
+++ b/synapse/federation/transport.py
@@ -257,6 +257,21 @@ class TransportLayer(object):
defer.returnValue(json.loads(content))
@defer.inlineCallbacks
+ @log_function
+ def get_event_auth(self, destination, context, event_id):
+ path = PREFIX + "/event_auth/%s/%s" % (
+ context,
+ event_id,
+ )
+
+ response = yield self.client.get_json(
+ destination=destination,
+ path=path,
+ )
+
+ defer.returnValue(response)
+
+ @defer.inlineCallbacks
def _authenticate_request(self, request):
json_request = {
"method": request.method,
@@ -427,6 +442,17 @@ class TransportLayer(object):
)
self.server.register_path(
+ "GET",
+ re.compile("^" + PREFIX + "/event_auth/([^/]*)/([^/]*)$"),
+ self._with_authentication(
+ lambda origin, content, query, context, event_id:
+ handler.on_event_auth(
+ origin, context, event_id,
+ )
+ )
+ )
+
+ self.server.register_path(
"PUT",
re.compile("^" + PREFIX + "/send_join/([^/]*)/([^/]*)$"),
self._with_authentication(
|