diff --git a/src/github.com/matrix-org/dendrite/roomserver/publicroom/public_room.go b/src/github.com/matrix-org/dendrite/roomserver/publicroom/public_room.go index e04ca3121..6ee6f9e9b 100644 --- a/src/github.com/matrix-org/dendrite/roomserver/publicroom/public_room.go +++ b/src/github.com/matrix-org/dendrite/roomserver/publicroom/public_room.go @@ -114,16 +114,18 @@ func (r *RoomserverPublicRoomAPI) GetPublicRooms( return err } - rooms, err := r.DB.GetAliasesFromRoomIDs(roomIDs) + aliases, err := r.DB.GetAliasesFromRoomIDs(roomIDs) if err != nil { return err } - var chunks []api.PublicRoomsChunk - for room, aliases := range rooms { + chunks := []api.PublicRoomsChunk{} + // Iterate over the array of aliases instead of the array of rooms, because + // a room must have at least one alias to be listed + for room, as := range aliases { chunk := api.PublicRoomsChunk{ RoomID: room, - Aliases: aliases, + Aliases: as, NumJoinedMembers: 0, WorldReadable: true, GuestCanJoin: true, diff --git a/src/github.com/matrix-org/dendrite/roomserver/storage/room_aliases_table.go b/src/github.com/matrix-org/dendrite/roomserver/storage/room_aliases_table.go index b08ce96cd..2c47a35d5 100644 --- a/src/github.com/matrix-org/dendrite/roomserver/storage/room_aliases_table.go +++ b/src/github.com/matrix-org/dendrite/roomserver/storage/room_aliases_table.go @@ -16,6 +16,8 @@ package storage import ( "database/sql" + + "github.com/lib/pq" ) const roomAliasesSchema = ` @@ -101,7 +103,7 @@ func (s *roomAliasesStatements) selectAliasesFromRoomID(roomID string) (aliases func (s *roomAliasesStatements) selectAliasesFromRoomIDs(roomIDs []string) (aliases map[string][]string, err error) { aliases = make(map[string][]string) - rows, err := s.selectAliasesFromRoomIDsStmt.Query(roomIDs) + rows, err := s.selectAliasesFromRoomIDsStmt.Query(pq.StringArray(roomIDs)) if err != nil { return }