diff options
author | Erik Johnston <erik@matrix.org> | 2020-05-29 17:49:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-29 17:49:47 +0100 |
commit | cb495f526dcfb6ee985df1a284b1af32ea3c5599 (patch) | |
tree | d7820cef0be880ec95149305d4eddb368f293a22 | |
parent | Make inflight background metrics more efficient. (#7597) (diff) | |
download | synapse-cb495f526dcfb6ee985df1a284b1af32ea3c5599.tar.xz |
Fix 'FederationGroupsRoomsServlet' API when group has room server is not in. (#7599)
-rw-r--r-- | changelog.d/7599.bugfix | 1 | ||||
-rw-r--r-- | synapse/handlers/room_list.py | 20 |
2 files changed, 13 insertions, 8 deletions
diff --git a/changelog.d/7599.bugfix b/changelog.d/7599.bugfix new file mode 100644 index 0000000000..deefe5680f --- /dev/null +++ b/changelog.d/7599.bugfix @@ -0,0 +1 @@ +Fix bug where returning rooms for a group would fail if it included a room that the server was not in. diff --git a/synapse/handlers/room_list.py b/synapse/handlers/room_list.py index e75dabcd77..4cbc02b0d0 100644 --- a/synapse/handlers/room_list.py +++ b/synapse/handlers/room_list.py @@ -253,10 +253,21 @@ class RoomListHandler(BaseHandler): """ result = {"room_id": room_id, "num_joined_members": num_joined_users} + if with_alias: + aliases = yield self.store.get_aliases_for_room( + room_id, on_invalidate=cache_context.invalidate + ) + if aliases: + result["aliases"] = aliases + current_state_ids = yield self.store.get_current_state_ids( room_id, on_invalidate=cache_context.invalidate ) + if not current_state_ids: + # We're not in the room, so may as well bail out here. + return result + event_map = yield self.store.get_events( [ event_id @@ -289,14 +300,7 @@ class RoomListHandler(BaseHandler): create_event = current_state.get((EventTypes.Create, "")) result["m.federate"] = create_event.content.get("m.federate", True) - if with_alias: - aliases = yield self.store.get_aliases_for_room( - room_id, on_invalidate=cache_context.invalidate - ) - if aliases: - result["aliases"] = aliases - - name_event = yield current_state.get((EventTypes.Name, "")) + name_event = current_state.get((EventTypes.Name, "")) if name_event: name = name_event.content.get("name", None) if name: |