1 files changed, 10 insertions, 1 deletions
diff --git a/synapse/handlers/directory.py b/synapse/handlers/directory.py
index 2e9c6b688b..22aab9b0a8 100644
--- a/synapse/handlers/directory.py
+++ b/synapse/handlers/directory.py
@@ -37,7 +37,7 @@ class DirectoryHandler(BaseHandler):
)
@defer.inlineCallbacks
- def create_association(self, room_alias, room_id, servers):
+ def create_association(self, room_alias, room_id, servers=None):
# TODO(erikj): Do auth.
if not room_alias.is_mine:
@@ -48,6 +48,12 @@ class DirectoryHandler(BaseHandler):
# TODO(erikj): Check if there is a current association.
+ if not servers:
+ servers = yield self.store.get_joined_hosts_for_room(room_id)
+
+ if not servers:
+ raise SynapseError(400, "Failed to get server list")
+
yield self.store.create_room_alias_association(
room_alias,
room_id,
@@ -83,6 +89,9 @@ class DirectoryHandler(BaseHandler):
defer.returnValue({})
return
+ extra_servers = yield self.store.get_joined_hosts_for_room(room_id)
+ servers = list(set(extra_servers) | set(servers))
+
defer.returnValue({
"room_id": room_id,
"servers": servers,
|