summary refs log tree commit diff
path: root/synapse/handlers/federation.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/handlers/federation.py')
-rw-r--r--synapse/handlers/federation.py61
1 files changed, 30 insertions, 31 deletions
diff --git a/synapse/handlers/federation.py b/synapse/handlers/federation.py
index 1ea837d082..3112cc88b1 100644
--- a/synapse/handlers/federation.py
+++ b/synapse/handlers/federation.py
@@ -68,37 +68,6 @@ if TYPE_CHECKING:
 logger = logging.getLogger(__name__)
 
 
-def get_domains_from_state(state: StateMap[EventBase]) -> List[Tuple[str, int]]:
-    """Get joined domains from state
-
-    Args:
-        state: State map from type/state key to event.
-
-    Returns:
-        Returns a list of servers with the lowest depth of their joins.
-            Sorted by lowest depth first.
-    """
-    joined_users = [
-        (state_key, int(event.depth))
-        for (e_type, state_key), event in state.items()
-        if e_type == EventTypes.Member and event.membership == Membership.JOIN
-    ]
-
-    joined_domains: Dict[str, int] = {}
-    for u, d in joined_users:
-        try:
-            dom = get_domain_from_id(u)
-            old_d = joined_domains.get(dom)
-            if old_d:
-                joined_domains[dom] = min(d, old_d)
-            else:
-                joined_domains[dom] = d
-        except Exception:
-            pass
-
-    return sorted(joined_domains.items(), key=lambda d: d[1])
-
-
 class FederationHandler:
     """Handles general incoming federation requests
 
@@ -299,6 +268,36 @@ class FederationHandler:
 
         curr_state = await self.state_handler.get_current_state(room_id)
 
+        def get_domains_from_state(state: StateMap[EventBase]) -> List[Tuple[str, int]]:
+            """Get joined domains from state
+
+            Args:
+                state: State map from type/state key to event.
+
+            Returns:
+                Returns a list of servers with the lowest depth of their joins.
+                 Sorted by lowest depth first.
+            """
+            joined_users = [
+                (state_key, int(event.depth))
+                for (e_type, state_key), event in state.items()
+                if e_type == EventTypes.Member and event.membership == Membership.JOIN
+            ]
+
+            joined_domains: Dict[str, int] = {}
+            for u, d in joined_users:
+                try:
+                    dom = get_domain_from_id(u)
+                    old_d = joined_domains.get(dom)
+                    if old_d:
+                        joined_domains[dom] = min(d, old_d)
+                    else:
+                        joined_domains[dom] = d
+                except Exception:
+                    pass
+
+            return sorted(joined_domains.items(), key=lambda d: d[1])
+
         curr_domains = get_domains_from_state(curr_state)
 
         likely_domains = [